在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
二分法检索变种实现代码怎么写?二分法中每次排除都可以排除掉一半的情况,这样寻找效率很高。之所以叫二分,因为每次排除都把所有的情况分成"可能"和"不可能"两种,然后抛弃所有"不可能"的情况。
二分法真的不简单,尤其是二分法的各个变种。最简单的二分法,就是从一个排好序的数组之查找一个key值。如下面的程序:

这个程序,相信只要是一个合格的程序员应该都会写。稍微注意一点, 每次移动left和right指针的时候,需要在mid的基础上+1或者-1, 防止出现死循环, 程序也就能够正确的运行。
但如果条件稍微变化一下, 你还会写吗?如,数组之中的数据可能可以重复,要求返回匹配的数据的最小(或最大)的下标;更近一步, 需要找出数组中第一个大于key的元素(也就是最小的大于key的元素的)下标,等等。这些,虽然只有一点点的变化,实现的时候确实要更加的细心。下面列出了这些二分检索变种的实现。
1、找出第一个与key相等的元素

2、找出最后一个与key相等的元素

3、查找第一个等于或者大于Key的元素

4、查找第一个大于key的元素

5、查找最后一个等于或者小于key的元素

6、查找最后一个小于key的元素
总结:
算法:当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。
基本思想:假设数据是按升序排序的,对于给定值key,从序列的中间位置k开始比较,
如果当前位置arr[k]值等于key,则查找成功;
若key小于当前位置值arr[k],则在数列的前半段中查找,arr[low,mid-1];
若key大于当前位置值arr[k],则在数列的后半段中继续查找arr[mid+1,high],
直到找到为止,时间复杂度:O(log(n))。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
计算机编程语言哪个适合零基础学习?
现在学习计算机编程语言成为获取高薪的重要途径。而非计算机专业的同学对计算机编程语言非常陌生。暂且不讨论是否学习,甚至连计算机编程语言有哪些都不认识。所以本片文章主要为大家介绍一下计算机编程语言。从而希望大家从中了解到计算机编程语言哪个适合零基础学习。
9703
2019-08-01 18:16:10
软件编程入门自学要学什么?零基础小白学习路线
软件编程入门自学要学什么?零基础小白需要从计算机的一些基础原理学起。总体上来看,学习的内容比较多,包括数字电路、计算机组成原理、汇编语言、计算机操作系统、计算机编译原理、离散数学、数据结构与算法、计算机网络等。本文将详细为大家讲讲零基础小白学习路线。
11861
2019-08-30 12:10:47
安卓编程该如何入门?
对于初学安卓编程的小白来说,掌握基础才是重中之重。许多新手都喜欢从网上找找资料,以及观看各大媒体平台的学习资源,资源是最不缺的东西。那么该如何找到合适自己的学习方法才是最重要的,对于安卓编程该如何入门。
5101
2020-05-26 10:28:55
怎样系统的学习编程?
怎样系统的学习编程?先打好理论基础,选择适合自己的学习资源,编程没有捷径多敲代码,归纳总结频回顾。培养自己的兴趣爱好,提升自己在学习过程中解决编程问题的能力。议选择线上IT培训班,选择一门适合自己的编程语言,系统学习相关知识点,老师全程答疑指导,边学学边练习项目,真正做到学以致用。
5949
2020-06-26 10:47:39
计算机网络常用术语大全
随着互联网技术岗位的走俏,越来越多的零基础转行者开始学习计算机技术。因此,小编为初学者整理汇总了计算机网络常用术语大全,大家在入门IT编程之前,可以简单对计算机的基础术语有一个大致的了解,从而为后续的学习奠定基础。下面一起来看看详细内容吧~
6622
2020-07-28 16:15:21
