快速查找

 1 #include 
 2 #include 
 3 
 4  int searchBin( int array[ 10], int len, int key);
 5 
 6  int main()
 7 {
 8      // printf("Hello world!\n");
 9       int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
10      int index = searchBin(array, sizeof(array)/ sizeof( int), 5);
11 
12      if(index==- 1)
13     printf( " 没找到! ");
14      else
15     printf( " 在%d找到目标 ",index);
16 
17      return  0;
18 }
19 
20  // 二分查找,返回数组索引.
21  int searchBin( int array[], int len, int key)
22 {
23      /*
24       * 下面语句会出错,刚刚初始化high==1
25       * 下面数组长度(high)中,sizeof(array)==4,array已经变化到指针的程度
26       * 无论传来的参数是int array[10],还是int array[]
27        */
28      // int low=0,high = sizeof(array)/sizeof(int),mid=(low+high)/2;
29       int low= 0,high = len,mid;
30 
31      while(low<=high)
32     {
33         mid=(low+high)/ 2;
34          if(array[mid]==key)
35              return mid;
36 
37          else  if(array[mid] 38             low = mid+ 1;
39 
40          else
41             high = mid- 1;
42     }
43 
44      // 没有找到
45       return - 1;
46 
47 }

转载于:https://www.cnblogs.com/zhengmian/archive/2012/11/17/search_Bin.html

你可能感兴趣的:(快速查找)