当前位置:网站首页>牛客网剑指offer之二分查找
牛客网剑指offer之二分查找
2022-08-05 16:46:00 【敲代码的小王!】

前言:
与牛客的相知相遇:
一次偶然的机会我接触到了牛客网,从那次我就发现牛客网好像是一个全能型的网站,里面有各种语言的练习题、算法题、大厂的面试题、还有求职等各项功能。从那以后我就开始了我的牛客之旅。
链接我就放在这了需要的伙伴们自取注册即可免费刷题
目录
二分查找
题目:

三个示例

问题描述
二分查找又称为折半查找,它要求待查找的数据元素必须是按关键字大小有序排列的。给定已排好序的n个元素s1,…,sn,现要在这n个元素中找出一特定元素x。 首先较容易想到使用顺序查找方法,逐个比较s1,…,sn,直至找出元素x或搜索遍整个序列后确定x不在其中。显然,该方法没有很好地利用n个元素已排好序这个条件。因此,在最坏情况下,顺序查找方法需要O(n)次比较。
算法思想
假定元素序列已经由小到大排好序,将有序序列分成规模大致相等的两部分,然后取中间元素与特定查找元素x进行比较,如果x等于中间元素,则算法终止;如果x小于中间元素,则在序列的左半部继续查找,即在序列的左半部重复分解和治理操作;否则,在序列的右半部继续查找,即在序列的右半部重复分解和治理操作。可见,二分查找算法重复利用了元素间的次序关系。
构造实例

代码实现
1、递归
//递归二分查找算法
int twoFind3(int A[], int k, int low, int high)
{
int middle;
if (low > high) return -1;//递归结束条件
middle = (low + high) / 2;
if (low==high && A[middle] == k) return middle;
if (low < high) {
if (A[middle] < k) return twoFind3(A, k, middle + 1, high);
else if(A[middle]==k) return middle;
else return twoFind3(A, k, 0, middle - 1);
}
return -1;
}2、非递归
int twoFind2(int A[], int len, int K)
{
int low = 0, high = len - 1,middle;
if (low > high) return -2;
while (low < high)//不含等于的情况,并在最后做判断
{
middle = (low + high) / 2;
if (K == A[middle]) return middle;
else if (K > A[middle]) low = middle + 1;
else high = middle - 1;
}
if (low == high && A[low] == K) return low;
return -1;
}时间复杂度

写在最后:文章如若有什么错误或者不足的地方,欢迎各位指正。
边栏推荐
- Geoffery Hinton:深度学习的下一个大事件
- The annual gas transmission volume of the West-East Gas Pipeline exceeds 100 billion cubic meters for the first time, and Tupu helps pipeline monitoring
- EasyCVR calls the stop real-time recording interface, how to solve the problem that the recording address is not returned?
- 图像处理:边缘检测
- 【案例】3d变换之一个旋转的圆圈
- 他,高中毕业,46岁收获一个360亿IPO
- Look at HTTP through the browser cache
- 流行的 Web 框架安全性比较
- 跨越“S型曲线”,华胜天成如何在数字时代开启第二曲线?
- UVa1149 - Bin Packing
猜你喜欢
随机推荐
【知识点】程序性能调优
【Case】3d photo album
编译器工程师眼中的好代码:Loop Interchange
d3:data and datum
UVa1149 - Bin Packing
机器视觉应用方向及学习思路总结
流行的 Web 框架安全性比较
小型企业CIO为大型企业IT负责人提供的重要经验
“FA都不给我推项目了”
Laplace(拉普拉斯)算子
[Case] A rotating circle in 3d transformation
华为设备配置MSTP+VRRP组合组网
纽约金价反弹 广州黄金产品热销
gpnmb+ gpnmb-的AT2细胞在空转上的映射 mapping----3.2.2seurat版本
【翻译】EF Core 3.1.x, 5.x & 6.x Second Level Cache Interceptor
支付系统架构设计详解
【无标题】
High Numbers_Prove_Uniqueness of Limits
[极角排序 扫描法]UVa1606 - Amphiphilic Carbon Molecules
远程push记录:









