二分法查找

二分法查找效率高,其查找次数与总元素数量存在对数关系

  • 原理
    在进行二分法查找前需要先对数据进行排序(具体排序实现详见下一篇文章),定义left(数据集的开头),right(数据集结尾)两个变量,然后在这组数据中找到mid=(left+right)/2,然后将待查找元素与mid所指元素进行比较,如果相等将索引返回,如果查找元素大于mid所指元素,则将left向右移动即left=mid+1;如果查找元素小于mid所指元素,则将left向左移动即right=mid-1。重复以上过程直到left>right(因为此时表明并不存在待查找元素)
  • C语言实现方法
    <pre>

include <stdio.h>

int search(int aim,int data[],int size);
int main(){
int aim=14;
int data[]={5,7,9,11,13,17,24,47,68,72,89,90,112};
printf("%d\n",search(aim,data,13));//希望输出14所对应的索引号
return 0;
}
int search(int aim,int data[],int size){
//二分法搜索
int det = -1;
int left = 0;//定义left整数变量
int right = size-1;//定义right
while(left<=right){//在while循环中直到有一个条件结束搜索
int mid = (left+right)/2;
if(data[mid]<aim){
left = mid+1;
}else if(data[mid]>aim){
right = mid-1;
}else{
det = mid;
break;//一定要break跳出循环
}
}
return det;
}
</pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift的二分法查找实践 在这篇教程中我们会使用计算机科学里一个基础的算法:二分法查找binary search...
    不是谢志伟阅读 5,931评论 1 5
  • 一维数组 首先开始最基本的Binary Search, 数组是有序的,但是有重复数。例题: Search for ...
    dol_re_mi阅读 6,990评论 0 2
  • php实现二分法的查找其实很简单,跟我一起来看看怎么实现吧。 二分法查找需要数组是一个递增的数组。 想要写出二分法...
    f12c2f60fcbb阅读 4,427评论 0 0
  • 二分法查找是定义最小值和最大值,还有一个中间值。将得到的数字与中间数比较,如果大于中间数,把最小值改成中间值加1,...
    腹黑小叶子orz阅读 4,336评论 0 1
  • 什么是二分查找法? 二分法检索(binary search)又称折半检索,二分法检索的基本思想是设字典中的元素从小...
    Sheryl_Nome阅读 2,778评论 0 0