就写了一个函数段,套着用就好了
int search(int key. int a[]. int len)
{
int ret = -1;
int left = 0;
int right = len -1;
while (right > left){
int mid = (left + right)/2;
if (a[mid] == k)
{
ret = mid;
break;
}
else if ( a[mid]>k ){
right = mid -1;
}
else {
left = mid+1;
}
}
return ret;
}
其中,key是我们要找的数,a[]是数组,实际传递的是一个指针
len代表是数组的长度。一般len = sizeof(a)/sizeof(a[0]) 即可算出。
返回的ret的值是在a[]函数中取得的位置。
核心思想就是取中,这个数在左边还是右边。改变left. right 的点。
如果左边的点还大于右边,说明数找不到,循环结束。就压根没有。