1 /* FILE: p198_binarySearch.c
2 * DATE: 20170114
3 * --------------
4 */
5
6 #include <stdio.h>
7
8 int binarySearch(int *array, int value, int length)
9 {
10 int left = 0;
11 int right = length - 1;
12 int mid;
13 while(left <= right)
14 {
15 mid = (left + right) / 2;
16 if(value > array[mid])
17 // 小心:此处要加1。否则当value不存在时,无法跳出循环
18 left = mid + 1;
19 else if(value < array[mid])
20 // 小心:此处要减1
21 right = mid - 1;
22 else
23 return mid;
24 }
25 return -1;
26 }
27
28 void insert_sort(int *array, int length)
29 {
30 int i;
31 for(i=1; i<length; i++)
32 {
33 int j = i;
34 int temp = array[i];
35 while((j>0) && (temp<array[j-1]))
36 {
37 array[j] = array[j-1];
38 j--;
39 }
40 array[j] = temp;
41 }
42 }
43
44 void print(int *array, int length)
45 {
46 int i;
47 for(i=0; i<length; i++)
48 printf("%d ", array[i]);
49 printf("\n");
50 }
51
52 int main(int argc, char *argv[])
53 {
54 int a[] = {2,6,4,8,2,10,0};
55 int len = sizeof(a) / sizeof(a[0]);
56 print(a, len);
57 insert_sort(a, len);
58 print(a, len);
59 printf("%d\n", binarySearch(a, 2, len));
60 printf("%d\n", binarySearch(a, 100, len));
61 return 0;
62 }
二分查找
最新推荐文章于 2022-07-16 14:00:00 发布