二分查找算法为什么要先排序

其实二分查找算法就和我们在一个英文字典中找一个单词一样,比如要找middle这个单词,先把字典翻到大概中间的位置,那么现在字典就被分成两个部分了,middle这个单词要么在第一个部分,要么在第二个部分,如果正好翻到p那一页,那么说明middle在前面的那个部分,再从前面那个部分找一个大概中间的位置,用不了多长时间就找到middle了。 我们查字典的这个方法就是二分查找算法,但是前提是字典是排好序的,如果字典是乱序的,那么就没法用 二分查找算法了。

 

仔细想来,插入算法也可以用类似二分查找算法的思路来操作,一般插入算法的前提肯定是已经排好序了,用二分插入算法效率很高。

 

 

从二分查找算法实现来看,它实际上是在降低候选数据规模的一种思路。

如果用最简单的一个一个查找,那么n个数据第一次查找的时候候选数据规模是n,第二次查找的时候候选数据规模是n-1。。。

每次数据规模减1.

如果二分查找的话,那么n个数据第一次 查找的时候候选数据规模是n,第二次查找的时候候选数据规模是n/2,第三次查找的时候数据规模是n/4。

可以看到二分查找算法降低数据规模的作用十分明显。

 

 

哈希算法也是一种查找算法,它的意思是先给候选数据建立索引,然后按照索引和候选数据一一对应的关系存起来,查找的时候是先把待查找数据用哈希函数算出索引值,然后就找到了候选数据了。处理问题的思路其实是一种把无序数据变得“有序”,

这个有序就是建立索引的过程,是一种预处理的思路,你让我查找数据,我先不找,先把数据摆弄摆弄,摆弄好了再找。我并不是很赞同书上说的哈希算法是一种空间换时间的算法,感觉没有说道点子上啊。

 

转载于:https://www.cnblogs.com/yfish/p/9946474.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值