1.使用php描述順序查詢和二分查詢(也叫做折半查詢)演算法,順序查詢必須考慮效率,物件可以是乙個有序陣列***
2.順序查詢
<?php
//$n為待查詢的陣列元素的個數,$k為待查詢的元素
function seq_sch($array, $n, $k) }
if ($i<$n) //判斷是否到陣列的末尾
else }
$array = array(3, 6, 1, 9, 2, 10);
$n = count($array);
$k = 8;
if(seq_sch($array, $n, $k))
else
?>
順序查詢是在乙個已知無序佇列中找出與給定關鍵字相同的數的具體位置。原理是讓關鍵字與佇列中的數從第乙個開始逐個比較,直到找出與給定關鍵字相同的數為止。
3.二分查詢
<?php
//$low為待查詢的陣列中的最小值,$high為陣列中的最大值,$k為要查詢的關鍵字
function bin_sch($array, $low, $high, $k)
elseif ($k < $array[$mid])
else }
return false;
} $array = array(1, 2, 4, 6, 8);
$low = min(1, 2, 4, 6, 8);
$high = max(1, 2, 4, 6, 8);
$k = 8;
if(bin_sch($array, $low, $high, $k))
else
?>
【二分查詢要求】:1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。
【演算法過程】首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。
重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。
例項:1, 2, 4, 6, 8
假設要查詢的關鍵字為2。
首先找出該數值中中間位置的數,即4,與關鍵字2比較,兩數不等,則將陣列以中間位置關鍵字4為分界點分為前後兩個字表,即
和中間位置關鍵字4大於要查詢的關鍵字2,所以查前乙個子表,該字表中有2,查詢成功。
順序查詢和二分查詢
二分查詢 陣列裡查詢某個元素 search函式 其中 array為陣列,k為要找的值,low為查詢範圍的最小鍵值,high為查詢範圍的最大鍵值 function search array,k,low 0,high 0 if low high 如果還存在剩餘的陣列元素 elseif k array m...
順序查詢和二分查詢
1 順序查詢 又稱線性查詢,是從陣列的第乙個元素開始查詢,直到找到待查詢元素的位置。順序查詢適合於儲存結構為順序儲存或鏈結儲存的線性表。使用for迴圈等實現。int find int a,int x return index 2 二分查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能...
順序查詢和二分查詢
問題 寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0.解析順序查詢 在乙個線性表中,按照從前往後或者從後往前的順序依次查詢,如果查詢到關鍵字和給定值相等,則返回給定值的位置,查詢成功 如果查詢值最後乙個元素仍未找到,則查詢失敗...