二分查找(折半查找)
折半查找思想 在有序表中取中间值与所要查找的值比较,若相等,查找成功;查找值小于中间值,在中间值左边的部分继续查找;
查找值大于中间值,在中间值右边部分继续查找。为什么减 1 ,因为比较的是中间值,所以不成功的话要在中间值的左或右部分查找
折半查找图片过程
文章图片
图片来源https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=315804038,6599760&fm=26&gp=0.jpg
折半查找要求
文章图片
时间复杂度o(log n) 【二分查找(折半查找)】
代码
?
#include
#define Max 100
typedef struct chazhao
{
int a[Max];
int length;
}ser;
int seatchc(ser* s,int key)
{
int low =0;
int high=s->length-1;
while(low<=high)
{
int middle=(low+high)/2;
if(s->a[middle]==key)
{
return middle;
}
else
{
if(s->a[middle]>key)
{
high=middle-1;
}
else
{
low=middle+1;
}
}
}
return -1;
}
void creats(ser *s)
{
int i;
printf("输入元素的个数:");
scanf("%d",&s->length);
for(i=0;
ilength;
i++)
{
scanf("%d",&s->a[i]);
}
}int main()
{
ser l;
int k,j;
creats(&l);
printf("输入查找的元素:");
scanf("%d",&k);
j=seatchc(&l,k);
if(j!=-1)
{
printf("元素的位置:%d",j+1);
}
else{
printf("No find\n");
}
return 0;
}?
推荐阅读
- 超好用的PubMed文献查找管理插件—Scholarscope
- Elasticsearch|Elasticsearch 简介
- 1月尾,是2018年的十二分之一,陈先生自我独白
- 终极找 bug 大法 - 二分
- iOS|iOS Runtime 的方法缓存(存储的形式、数据结构以及查找的过程?)
- 算法|算法-二分查找
- 128
- Python笔记关于环境安装(二)模块的查找
- Python|Python 每日一练 二分查找 搜索旋转排序数组 详解
- Mysql配置问题