PHP實現的折半查詢演算法示例

2022-10-03 23:06:25 字數 697 閱讀 6993

定義:折半查詢技術,也就是二分查詢。它的前提是線性表中的記錄必須是關鍵碼有序(通常從大到小有序),線性表必須採用順序儲存。

折半查詢的基本思想:取中間記錄作為比較物件,若給定值與中間記錄的關鍵字,則在中間記錄的關鍵字相等,則查詢成功;若給定值小於中間記錄的作伴去繼續查詢;若給定值大於中間記錄的關鍵字,則在中間記錄的右半區繼續查詢。不斷重複上述過程,直到查詢成功,或所有查詢區域無記錄,查詢失敗為止。

實現**:

<?php //遞迴方式

function bin_recur_search($arr,$val)elseif($arr[$mid] > $val)else

} return '未找到'.$val;

}//非遞迴方式

function bin_search($arr,$val)elseif($val > $arr[$mid])else

}} return '未找到'.$val;

}rboknnwnxq$arr = array(1,3,5,7,7,9,25,68,98,145,673,8542);

echo bin_recur_search($arr, 673);

echo bin_search($arr, 673);

?>

執行結果:

值為:673

查詢次數:4

索引:10

值為:673

查詢次數:4

折半查詢演算法實現

折半查詢是一種比較高效的查詢方式,其基本思想是 在某個有序表中,取出中間的記錄作為比較物件,如果要查詢記錄的關鍵碼等於中間記錄的關鍵碼,則查詢成功 若要查詢記錄的關鍵碼小於中間記錄的關鍵碼,則在中間記錄的左半區繼續查詢 若查詢記錄的關鍵碼大於中間記錄的關鍵碼,則在中間記錄的右半區繼續查詢。不斷重複上...

二分查詢演算法,折半查詢,PHP的實現

演算法要求 1,順序的儲存結構。2,按大小有序排列 演算法查詢過程 假設是一張公升序的表,1,關鍵字與中間位置比較,相等則查詢成功。2,大於中間位置,則將表對半拆,取後半段的表,然後重新對比中間位置的值。3,小於中間位置,則將表對半拆,取前半段的表,然後重新對比中間位置的值。4,如果中間位置與開始位...

PHP折半查詢

折半查詢技術,也就是二分查詢。它的前提是線性表中的記錄必須是關鍵碼有序 通常從大到小有序 線性表必須採用順序儲存。取中間記錄作為比較物件,若給定值與中間記錄的關鍵字,則在中間記錄的關鍵字相等,則查詢成功 若給定值小於中間記錄的作伴去繼續查詢 若給定值大於中間記錄的關鍵字,則在中間記錄的右半區繼續查詢...