#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<algorithm>
using namespace std;
const int MAXN = 10000;
int a[MAXN - 1];
int main()
{
srand(time(0));
//给a数组赋予MAXN个随机数
for (int i = 0; i <= MAXN - 1; i++)
{
a[i] = rand() % 10000;
}
//排好序
sort(a, a + MAXN);
int start = 0;
int end = MAXN - 1;
int mid = (start + end) / 2;
int key;
int index = -1;
printf("请输入想查找的数\n");
scanf("%d", &key);
while (1)
{
if (a[mid] == key||start>end)//如果找到了,或者到最后也没找到,也就是start指针都到end后面了
{
if(a[mid] == key)//如果是第一种情况
index = mid;
break;
}
else if(a[mid]> key)//证明中间数偏大,说明数在较小的区域,也就是左边
{
end = mid - 1;
mid = (start + end) / 2;
}
else//证明中间数偏小,说明数在较大的区域,也就是右边
{
start = mid + 1;
mid = (start + end) / 2;
}
}
if (index == -1)
{
printf("没找到\n");
}
else
{
printf("%d在下标为%d的位置上\n", a[index], index);
}
}
基于随机数的二分查找(C语言+stl实现)
最新推荐文章于 2023-05-01 07:01:26 发布