快速查找
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 }
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 }