1.二分法与逐个比较
二分查找法好比在1到100之间猜数,我们可以从1到99一个个的猜,这是最笨的方法。因为当我心里想的那个数是99的时候,需要猜99次才能得到答案,时间复杂度比较高。好比如下:
下面是对半猜数:
因此,对于包含n个元素的列表,二分查找法最多需要log2(n)步。而一个个查找的话需要n步。
需要注意的是,仅当列表是有序的时候,这样的查找才是有意义的。
以下是针对 python 2 版本:
2.运行时间
针对逐个查找发来说,如果序列长度为100,那么查找次数最多需要100次。如果列表包含40亿个,那么查找次数最多需要40亿次,像这样,最大查找次数与序列长度相同,这样成为线性时间(lnear time)。
二分查找法则不同,序列长度为100次的元素,最多需要猜log2(100) 为7次,如果列表包含40亿次,最多需要查找32次。