二分查找

来源:互联网 发布:全自动手机降温软件 编辑:程序博客网 时间:2024/05/29 17:23

二分查找的前提是一个数组元素有序的数组,然后通过找寻中间的素的下表与多找的key值进行比较,若a[mid]>key,则把a[mid]右边的数当做下一个数组进行查找,若a[mid]

#include <stdio.h>#include <stdlib.h>int bin_search(int a[], int key, int left, int right){    while (left<=right)    {        int mid = left - (left - right) / 2;//防止溢出        //mid=(left&right)+(left^right)>>1;        if (a[mid] > key)        {            right = mid - 1;        }        else if (a[mid] < key)        {            left = mid + 1;        }        else            return mid;    }    return -1;}int main(){    int a[] = { 1, 2, 3, 4, 5, 6 };    int k = 6;    int left = 0;    int right = sizeof(a) / sizeof(a[0])-1;    int ret = 0;    ret=bin_search(a, k, left, right);    if (ret != -1)    {        printf("%d", a[ret]);    }    else    {        printf("not find");    }    system("pause");    return 0;}
0 0
原创粉丝点击