在有序数组中查找指定数字可以使用二分查找,二分查找有极低的时间复杂度,代码实现如下
int bin_searh(int arr[],int k,int sz){// k为要查找的元素,sz是数组的长度
int l=0;
int r=sz-1;
while(l<=r){
int mid=(l+r)/2;
printf("%d\n",mid);
if (arr[mid]<k) {
l=mid+1;
}
else if (arr[mid]>k){
r=mid-1;
}
else {
return mid;
}
}
return -1;
}//如果能找到返回地址,找不到返回-1