例子:假設要在電話簿中找一個名字以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