二分法

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次。

 

posted @ 2021-01-14 14:38  为红颜  阅读(2576)  评论(0编辑  收藏  举报