0门槛带你了解二分查找

简介: 二分查找也叫折半查找,就是在一段有序的数组中查找某个元素。

1.什么是二分查找?


二分查找也叫折半查找,就是在一段有序的数组中查找某个元素。


2.二分查找的逻辑


原理很简单,每次拿目标数值(用k表示)与数组中间位置的数据(用arr[mid]表示,mid表示数组中间位置索引值)进行比较,如果k大于arr[mid],那么左下标left=mid+1,继续将k与大于arr[mid]部分的中间位置的值进行比较;如果k小于arr[mid],那么右下标right=mid-1,继续将k与小于arr[mid]部分的中间位置值进行比较。

微信图片_20230420130024.png

intmain() {
inta[] = { 1,2,3,4,5,6,7,8,9,10 };
intsz=sizeof(a) /sizeof(a[0]);//计算数组中元素的个数intleft=0;//左下标intright=sz-1;//右下标intk=7;//要查找的元素while (left<=right) {
intmid= (left+right) /2;//求数组中间下标if (a[mid] <k) {
left=mid+1;
        }
elseif (a[mid] >k) {
right=mid-1;
        }
else {
printf("找到了,下标是:%d\n", mid);
break;
        }
    }
if (left>right)
printf("找不到\n");
return0;
}

微信图片_20230420130116.png

目录
相关文章
|
存储 算法 搜索推荐
时间复杂度:一步步理解算法效率
时间复杂度:一步步理解算法效率,更多文章可关注我的微信公众号:Python学习杂记
336 0
|
3月前
|
搜索推荐
九大排序算法时间复杂度、空间复杂度、稳定性
九大排序算法的时间复杂度、空间复杂度和稳定性,提供了对各种排序方法效率和特性的比较分析。
150 1
技术经验解读:【LeetCode】560.SubarraySumEqualsK子数组和为K
技术经验解读:【LeetCode】560.SubarraySumEqualsK子数组和为K
|
6月前
|
算法 搜索推荐
【六大排序详解】中篇 :选择排序 与 堆排序
选择排序可以用扑克牌理解,眼睛看一遍所有牌,选择最小的放在最左边。然后略过刚才排完的那张,继续进行至扑克牌有序。这样一次一次的挑选,思路很顺畅。总结为: 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。
50 6
|
6月前
|
算法
【六大排序详解】终篇 :冒泡排序 与 快速排序
冒泡排序如同泡泡上升一样,逐个逐个向上冒,一个接一个的冒上去。两两比较,较大者(较小者)向后挪动。全部遍历一遍即可完成排序
45 2
|
6月前
|
搜索推荐 算法 索引
【八大经典排序算法】快速排序
【八大经典排序算法】快速排序
56 0
|
6月前
|
搜索推荐 算法
【八大经典排序算法】堆排序
【八大经典排序算法】堆排序
30 0
|
6月前
|
搜索推荐 算法
【八大经典排序算法】冒泡排序
【八大经典排序算法】冒泡排序
36 0
|
6月前
|
搜索推荐 算法
【八大经典排序算法】选择排序
【八大经典排序算法】选择排序
26 0
|
算法 搜索推荐
【八大排序(七)】归并排序初级篇-递归版
【八大排序(七)】归并排序初级篇-递归版