查詢演算法 二分查詢法 折半查詢

2022-06-09 21:24:11 字數 1489 閱讀 9176

二分查詢也稱折半查詢(binary search),它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。

大家都應該玩過猜數字的遊戲吧?

給定乙個數字的範圍 1-100 隨機抽取乙個數字,然後玩家輪流猜數字,猜錯時告訴玩家結果數字是大於猜測數字還是小於.

那麼,該怎麼猜數字最快得出答案呢?當然就是二分查詢了:

每次猜數字,都按照範圍的一半進行猜測,例如

1-100範圍,隨機抽取55這個數字

折半查詢猜50,大於50,那麼這個數字的範圍就縮小到了50-100,

繼續猜測75,小於75,那麼範圍就縮小成了50-75,

繼續猜測63,小於63,範圍縮小到了50-63

這樣下去,原本100個數字,最多隻需要log2n 次即可查出資料

100的資料,只需要最多8次即可查出

隨機抽取 1-100 的乙個數字,猜測這個數字是多少?12

3456

78910

1112

1314

1516

1718

1920

2122

2324

25<?php

//隨機抽取1-100數字

$randnum= mt_rand(0,100);

echo"實際值為:\n";

functionguess($randnum,$minnum,$maxnum,$guessnum=1)次:\n";

if($guessvalue==$randnum)elseif($guessvalue>$randnum)elseif($guessvalue<$randnum)

}

$num= guess($randnum,0,100);

echo"最終值:";

輸出:

二分查詢法(折半查詢法)

二分查詢法 說明 如果搜尋的數列已經有排序,應該盡量利用它們已排序的特性,以減少搜尋比對的次數 這是搜尋的基本原則,二分搜尋法是這個基本原則的代表。解法 在二分搜尋法中,從數列的中間開始搜尋,如果這個數小於我們所搜尋的數,由於數列已排序,則該數左邊的數一定都小於要搜尋 的物件,所以無需浪費時間在左邊...

二分查詢法 折半查詢法

二分查詢法 也稱折半查詢法,是一種效率較高的查詢方法,存在一定的侷限性。侷限性 適用於有序陣列 有序鍊錶等查詢,例如 array,list。基本原理 第一步 設定需要查詢的元素key,再設定low和high兩個臨時指標分別指向左邊第乙個元素和右邊最後乙個元素。第二步 因為資料是有序的,先根據low和...

二分查詢法(折半查詢法)

二分查詢用法 1 二分查詢要求 2 什麼時候使用二分查詢當在乙個有序list中,需要查詢乙個值,而這個值不確定在什麼位置時,使用該演算法可以通過極少的查詢次數得到結果 而使用簡單查詢,如果這個值在list的最後出現就需要查詢列表長度的次數才可以查到。也就是說,對於包含n個元素的列表,用二分查詢最多需...