在线客服
扫描二维码
下载博学谷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))。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
自学编程入门有哪些困难?
许多人是0基础,想要自学编程入门,在学期前期就会遇到许多的困难和迷茫。例如不知道从什么语言开始,也不清楚自己的目标是什么,对于毫无基础的初学者来着,无疑是非常困难的。
4091
2020-05-28 15:55:37
怎么判断自己适不适合学编程?
经常可以在网上看到这样的疑问:自己目前的工作没有前途,零基础学编程转行行不行?众所周知,IT编程是一个香饽饽行业,薪资待遇高发展前景好。但是是不是所有人都适合学编程呢?下面我们就来聊聊怎么判断自己适不适合学编程。
5998
2020-07-20 16:04:59
好家伙,原来这就是程序员高薪的秘密!
我觉得每个人都应该学习一门编程语言。学习编程教你如何思考,就像学法律一样,学法律并不一定要为了做律师,但法律教你一种思考方式。学习编程也一样,我把计算机科学看成是教育,每个人都应该花至少1年时间学习编程。
3267
2021-08-06 15:13:35
学编程学费要多少钱?需要学习多久?
学编程学费要多少钱?学习多久?培训机构的学费一般是一万到两万之间,大概需要学习5个月左右,编程是一个非常火的热门行业,互联网时代各种新技术的出现都离不开程序员,Java程序员、大数据程序员、Hadoop程序员,Python程序员等各种程序员应运而生,很不少人想加入程序员的行业,关于编程培训学费多少钱始终是很多朋友关注的问题。
6405
2022-01-14 13:47:06
学好编程的必备素养,你有么?
老师带你从以下两个方面来测试一下,你到底适不适合学编程
2070
2022-11-07 09:51:53