一个函数实现一个整形有序数组的二分查找
程序员文章站
2024-03-17 14:38:52
...
一个函数实现一个整形有序数组的二分查找
int binary_search(int arr[], int k, int left, int right)
{
while(left <= right)
{
int mid = left + (right-left)/2; //mid是数组下标
if(arr[mid] < k) //arr[mid]为数组元素
{
left = mid + 1;
}
else if(arr[mid] > k)
{
right = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int k = 5;
int sz = sizeof(arr)/sizeof(arr[0]);
int res = binary_search(arr,k,0,sz-1); //这里0为left; sz-1为right
if(res == -1)
{
printf("找不到.....\n");
}
else
{
printf("找到了,下标为%d\n",res);
}
return 0;
}
运行结果
上一篇: PAT 甲级 A1010 Radix (25 分)
下一篇: 进制转换_小数