当前位置:网站首页>牛客网剑指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;
}时间复杂度

写在最后:文章如若有什么错误或者不足的地方,欢迎各位指正。
边栏推荐
- Image Edge Detection - First Order Differential Operator Roberts, Sobel, Prewitt, Kirsch, Robinson
- 【案例】animation动画曲线之steps的使用
- RestTemplate上传文件
- ASIC和FPGA设计流程
- [Case] Animation of a bear running
- 电脑重装系统后如何给系统磁盘扩容空间
- 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
- 他,高中毕业,46岁收获一个360亿IPO
- WPF 截图控件之移除控件(九)「仿微信」
- Basic Concepts in Network Communication
猜你喜欢
![[Case] The use of steps in animation animation curve](/img/b0/2831f9318ce28d8732fb5ba87431bd.png)
[Case] The use of steps in animation animation curve

JVM调优前置知识-深堆Retained Heap和浅堆Shallow Heap

High Numbers_Prove_The Clamping Criterion of the Existence of Limits

微信公众号之微信认证

High number of _ _ limit local insurance number

企业如何进行企业文档管理?提供3种新思路

小伙伴面试之成都创宇知道

电脑重装系统后如何给系统磁盘扩容空间

stm32f103开发板入门到手进行开发

vu2 尚硅谷 组件化编程
随机推荐
机器人强化学习——COCOI: Contact-aware Online Context Inference for Generalizable Non-planar Pushing(21 ICRA)
基于consul的服务注册与消费案例
【案例】3d导航
RestTemplate上传文件
Image Edge Detection - First Order Differential Operator Roberts, Sobel, Prewitt, Kirsch, Robinson
Monotonic Bounded Criterion for High Numbers_Prove_Limit Existence
leetcode:285. 二叉搜索树中的中序后继节点
这个「令人上头」的赛道,俞敏洪、高瓴都入了,红杉和腾讯会来吗?
2018-10-14 21点20分
stm32f103开发板入门到手进行开发
数据库篇——hash索引
【翻译】EF Core 3.1.x, 5.x & 6.x Second Level Cache Interceptor
图像处理:坐标变换
RestTemplate上传文件
Registered less than a week for data security in the British parliament TikTok dispute the substance is discontinued
[uvm]create_item ???
小型企业CIO为大型企业IT负责人提供的重要经验
单液压缸(Single-Acting Hydraulic Cylinder)数学模型和PID闭环控制(PLC比例流量阀控制)
【知识点】程序性能调优
【案例】animation动画曲线之steps的使用