1.二分搜索
一种效率较高的搜索算法,但要求要排序的数组必须是有序的
2.核心思想
每次都从中间查找,若找到的值大于中间值,则往后找(原数组为升序数组),不然往前查找。
3.图片演示
4.代码实现
#include <stdio.h>
int main()
{
int a[10];
for (int i = 0; i < 10; i++)
{
a[i] = i;
}
printf("请输入你想搜索的值:");
int searchval = 0;
scanf("%d", &searchval);
int left = 0;
int right = 10 - 1;
int flag = 0;
while (left <= right)
{
int mid = left + (right - left) / 2;
if (a[mid] > searchval)//中间的值大于要搜索的值,让right变化
{
right = mid - 1;
}
else if (a[mid] < searchval)//中间的值小于要搜索的值,让left变化
{
left = mid + 1;
}
else
{
flag = 1;
printf("搜索到该元素辣!在%d位置", mid);
break;
}
}
if (flag == 0)
{
printf("没有该元素啊");
}
return 0;
}
5.总结
因为考试周,实在没有时间去刷题,发一些自己的感想。我原本写的二分搜索不如这个好,所以在了解到这种写法后,立马做了一下总结。