代码拉取完成,页面将自动刷新
//在一个有序数组中查找具体的某个数字n。(讲解二分查找)
#include<stdio.h>
int main()
{
int arr[10] = { 1 ,2, 3, 4, 5, 6, 7,8,9,10 };
int length = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = length - 1;
int mid = 0;
int i = 0;
int key = 0;
printf("请输入要查找的数字:");
scanf("%d", &key);
while (left <= right)
{
mid = (left + right) / 2;
if (arr[mid] > key)
{
right = mid - 1;
}
else if (arr[mid] < key)
{
left = mid + 1;
}
else
break;
}
if (left <= right)
{
printf("找到了,该数字的下标是:%d\n", mid);
}
else
{
printf("找不到\n");
}
return 0;
}
如果实现一个二分查找函数:
int bin_search(int arr[], int left, int right, int key)
{
int mid = 0;
while(left<=right)
{
mid = (left+right)>>1;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
return mid;//找到了,返回下标
}
return -1;//找不到
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。