二分搜索
1 #include<stdio.h> 2 3 int search(int key, int a[], int len); 4 int main(void) 5 { 6 int a[] = { 1,3,6,7,8,9,10,11,13 }; 7 int k = 11; //需要找的数 8 int r = search(k, a, sizeof(a) / sizeof(a[0])); 9 10 printf("%d", r); 11 12 return 0; 13 } 14 15 int search(int key, int a[], int len) 16 { 17 int ret = -1; 18 19 int left = 0; 20 int right = len - 1; 21 while (left < right) 22 { 23 int mid = (left + right) / 2; 24 if (key == a[mid]) 25 { 26 ret = mid; 27 break; 28 } 29 else if (key < a[mid]) 30 { 31 right = mid - 1; 32 } 33 else 34 { 35 left = mid + 1; 36 } 37 } 38 39 return ret; 40 }