在整形有序数组中查找想要找的数字,找到了返回下标,找不到返回 – 1(折半查找法)
#include<stdio.h>
#include<stdlib.h>
int main()
{
intnum = 0;
printf("请输入要查找的数: ");
scanf("%d", &num);
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int mid = 0;
int left = 0;
int right = sizeof(arr) / sizeof(arr[0])- 1;
while(left <= right)
{
mid =left + (right - left) / 2;
if(arr[mid] < num)
{
left = mid + 1;
}
elseif(arr[mid]>num)
{
right= mid - 1;
}
else
{
break;
}
}
if(left <= right)
{
printf("找到了下标为%d ", mid);
}
else
{
intret = -1;
printf("%d", ret);
}
system("pause");
return 0;
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。