1.問題
在乙個排好序的陣列t[1…n]中查詢x,如果x在t中,輸出x在t的下標j;如果x不在t中,輸出j=0.按實驗模板編寫,「分析」部分僅給出複雜度結果即可。
2.解析
方法一:順序查詢,從陣列的第乙個開始查詢,將每個數與x比較,找到則輸出x的下標,否則輸出0.
方法二:二分查詢,將x與陣列的中間值比較,如果相等則找到,如果不相等,不管大於還是小於,都縮小了查詢範圍,直到找到下標j,若沒有則輸出0.
3.設計
//順序查詢
int search(int t,int n,int x)// 輸入有序陣列a,查詢的值value,陣列長度n
return 0;
}4.分析
順序查詢:o(n)
二分查詢:o(log2n)
5.原始碼
二分查詢和順序查詢
順序查詢可以處理有序陣列,也可以處理無序陣列,依次遍歷陣列,查詢待找元素,其時間複雜度為o n 折半查詢只能處理有序陣列,每次查詢的過程中,都會將查詢範圍縮小一半,其時間複雜度為o log2n 以2為底,n的對數。順序查詢即按照陣列的元素下標位置,依次去比對查詢,直到找到該元素為止,若迴圈結束依然未...
PHP 二分查詢和順序查詢
二分查詢 1 使用php描述順序查詢和二分查詢 也叫做折半查詢 演算法,順序查詢必須考慮效率,物件可以是乙個有序陣列2 3 二分查詢法 陣列中查詢某個元素 4 param array array 要查詢的陣列 5 param int low 查詢的起始位置 6 param array high 查詢...
檢索演算法 順序查詢和二分查詢
分析原始碼 使用兩種檢索演算法求解有序陣列中某元素的所在位置。有序陣列最基本檢索演算法是順序查詢,又稱線性查詢,其思想是從資料結構線性表的一段開始順序掃瞄,依次將掃瞄到的元素和給定值x相比較,若找到相等值則表示查詢成功,若掃瞄結束仍未找到與給定值相等的元素,則表示線性表中不存在給定值。有序陣列的另一...