演算法之二分查詢 php版實現 測試

2021-08-03 17:12:19 字數 1282 閱讀 5261

遞迴版二分查詢:

核心演算法: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,為要詢問的給定值個數...