快速查找

 1 #include <stdio.h>
 2 #include <stdlib.h>
 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]<key)
38             low = mid+1;
39 
40         else
41             high = mid-1;
42     }
43 
44     //没有找到
45     return -1;
46 
47 }
posted @ 2012-11-17 10:41  zhengmian  阅读(333)  评论(0编辑  收藏  举报