例子:假设要在电话簿中找一个名字以K打头的人,可以从A开始看,直到进入以K开头的部分。但我们很可能不这样做,而是从中间开始,因为我们知道以K开头的名字在电话簿中间。这是一个查找的问题,在上述情况下,可以使用一种算法来解决问题,这种算法就是二分查找。
概述:二分查找是一种算法,其输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置,否则返回null。
示例题目:我随便想一个1-100之间的数字,你猜我想的是哪个。目标:是以最少的次数猜对这个数字,你每次猜,我都会说是小了或者大了或对了。笨办法解题:从一开始猜,一直往上猜,每次只能排除一个数。假如,我想的是99,你需要猜99次。更佳的查找方式:从50开始猜,小了,但排除了一半的数字;接下来,猜75,大了,那余下的一半又排除掉了。你猜测的是中间的数字,每次都将余下的数字排除一半。接下来你猜63->69->72->73->74不管我心里想的是哪个数字,在7次之内,你都能猜到。总结:对于包含n个元素的列表,用二分查找最多要log2n步,而简单查找需要n步。对数:log10 100相当于->将多少个10相乘能得到100,答案很显然是2,所以log 10 100=2