前提是N个数已按升序排列好
顺序查找对n个数的平均比较次数为n/2次
二分查找对n个数的平均比较次数为[log(2) n]+1次
#include<stdio.h>
#define N 10//这里可以更改数组的大小
int main() {
int x, i,f, mid, top, bottom;
int a[N];
f = 0;//初始为没有找到
printf("请输入%d个数\n", N);
for (i = 0; i < N; i++) {
scanf_s("%d", &a[i]);//vs中scanf写为scanf_s
}
printf("请输入您想查找的数\n");
scanf_s("%d", &x);//vs中scanf写为scanf_s
top = 0;
bottom = N - 1;
while(top <= bottom) {//划重点
mid = (top + bottom) / 2;
if (a[mid] == x) {
printf("找到了 %d", x);
f = 1;//标记查找到了
break;
}
else {
if (x < a[mid]) {
bottom = mid - 1;
}
else {
top = mid + 1;
}
}
}
if (f == 0) {
printf("%d没有被找到",x);
}
return 0;
}


本文介绍了一种高效的查找算法——二分查找,并提供了详细的实现步骤。通过对有序数组进行逐层划分,该算法能够显著减少搜索过程中的比较次数,提高了查找效率。
806

被折叠的 条评论
为什么被折叠?



