C--二分搜索

 1 //二分搜索
//时间复杂度小 log2 n
2 int search(int key, int a[], int len) 3 { 4 int ret = -1; 5 int left = 0; 6 int right = len-1; 7 int mid; 8 while(left<right) 9 { 10 mid = (right + left)/2; 11 if(a[mid] == key) 12 { 13 ret = mid; 14 break; 15 }else if(a[mid] >key){ 16 right = mid-1; 17 }else{ 18 left = mid-1; 19 } 20 } 21 return ret; 22 } 23 int main() 24 { 25 int a[] = {1,2,3,4,5}; 26 int r = search(1, a, sizeof(a)/sizeof(a[0])); 27 printf("%d",r); 28 return 0; 29 }

 

posted @ 2019-05-17 15:49  壹碗  阅读(366)  评论(0编辑  收藏  举报