遞迴版二分查詢:
核心演算法:binarysearch.php
//echo內容均為debug
<?php
//遞迴
function
rank
($key,&$array,$lo,$hi,$deep)
//php是弱型別 利用floor向下取整(陣列中會自動取整可不需要)
$mid = floor($lo + ($hi - $lo) / 2);
echo
"deep: ".$deep." lo: ".$lo." hi:".$hi.'
'; if ($array[$mid] > $key)
else
if ($array[$mid] < $key)
else
}function
binarysearch
($key,&$array)
?>
測試**+介面:totest.php
<?php include("binarysearch.php"); echo ' '; function test($key,$file,$tmp) binarysearch($key,$array); } test($_post['key'],$_files['marco']['name'],$_files['marco']['tmp_name']); ?>
執行:
非遞迴版:
核心演算法:bianrysearch.php
<?php
function
binarysearch
($key,&$array)
}echo
"$key 未找到
"; return -1;
}?>
totest.php與上面相同:
實現:
php查詢演算法,PHP演算法之二分查詢
二分查詢的定義 二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。演算法的要求 從上面的定義我們可以知道,滿足該演算法的要求必須如下兩點 必須採用順序儲存結構。必須按關鍵字大小有序排列。演算法的步...
PHP查詢演算法之二分查詢 折半查詢
折半查詢意為從把陣列從中間分成兩半,找到乙個中間值,然後進行判斷,首先這個陣列一定是從大到小或者從小到大排好序的。下面的 裡陣列是從小到大排序的。遞迴形式的 定義乙個從小到大排好序的陣列 arr 12 34 43 56 77 86 88 90 99 101 要查詢的數字 num 88 count c...
演算法之二分查詢
總時間限制 1000ms 記憶體限制 65536kb 描述在乙個非降序列中,查詢與給定值最接近的元素。輸入第一行包含乙個整數n,為非降序列長度。1 n 100000。第二行包含n個整數,為非降序列各元素。所有元素的大小均在0 1,000,000,000之間。第三行包含乙個整數m,為要詢問的給定值個數...