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

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

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

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

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

每次数据规模减1.

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

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

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

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

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注