美文网首页
二分法查找

二分法查找

作者: Spike_Spiegel | 来源:发表于2017-06-27 17:47 被阅读0次

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

  • 原理
    在进行二分法查找前需要先对数据进行排序(具体排序实现详见下一篇文章),定义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>

相关文章

  • 二分法查找

    二分法基本查找 二分法遍历查找

  • 二分法查找

    二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法...

  • 刷前端面经笔记(九)

    1.JavaScript实现二分法查找? 二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找...

  • 数据结构-递归

    二分法查找

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • 二分查找

    以二分法来提升查找效率 二分法查找到key的合适位置 put get delete 二分查找的查找操作为O(log...

  • 算法和排序

    1、线性查找 2、二分法查找 3、冒泡排序

  • 查找算法

    查找算法 顺序查找法 时间复杂度:O(n) 二分法查找 二分法查找适用于有顺序的序列 时间复杂度:O(n) 核心思...

  • 算法图解1-2/11

    原书作者 Aditya Bhargava 1 算法简介 1.1 二分法查找 二分法查找,正是猜数字游戏的玩法:A...

  • 前端面试之算法二分法

    使用二分法的前提是,目标数组的元素必须是有序排列的,所以二分法属于有序查找算法 二分法又称为“折半查找”,从数组的...

网友评论

      本文标题:二分法查找

      本文链接:https://www.haomeiwen.com/subject/jxbecxtx.html