寫出兩種檢索演算法:在乙個排好序的陣列t[1…n]中查詢x,如果x在t中,輸出x在t的下標j;如果x不在t中,輸出j=0.
1)順序查詢
順序查詢是按照序列原有順序對陣列進行遍歷比較查詢的基本查詢演算法。
對於任意乙個序列以及乙個給定的元素,將給定元素與序列中元素依次比較,直到找出與給定關鍵字相同的元素,或者將序列中的元素與其都比較完為止。
2)對分查詢
對分查詢適用於順序儲存結構且關鍵字有序排列的情況。首先,將陣列中間位置記錄的關鍵字與查詢關鍵字比較,若兩者相等,則查詢成功。否則利用中間位置記錄將陣列分為前後兩個子陣列,若中間位置記錄的關鍵字大於查詢關鍵字,則查詢前一子陣列,否則查詢後面的子陣列。重複以上過程,直到找到滿足條件的記錄,查詢成功,或直到不存在子陣列為止。
順序
#include
using
namespace std;
intshunxu_search
(int a,
int n,
int key)
return-1
;}intmain()
;int a;
cin >> a;
int j =
shunxu_search
(arr,
sizeof
(a), a);if
(j ==-1
) cout <<
"j=0"
<< endl;
else
cout <<
"j="
<< j << endl;
return0;
}
對分
#include
using
namespace std;
intduifen_search
(int a,
int n,
int key)
else
if(key > a[m]
)else
}return-1
;}intmain()
;int n =
size
(a);
int a;
cin >> a;
int j =
duifen_search
(a, n -
1, a);if
(j >=0)
else
return0;
}
二分查詢和順序查詢
順序查詢可以處理有序陣列,也可以處理無序陣列,依次遍歷陣列,查詢待找元素,其時間複雜度為o n 折半查詢只能處理有序陣列,每次查詢的過程中,都會將查詢範圍縮小一半,其時間複雜度為o log2n 以2為底,n的對數。順序查詢即按照陣列的元素下標位置,依次去比對查詢,直到找到該元素為止,若迴圈結束依然未...
PHP 二分查詢和順序查詢
二分查詢 1 使用php描述順序查詢和二分查詢 也叫做折半查詢 演算法,順序查詢必須考慮效率,物件可以是乙個有序陣列2 3 二分查詢法 陣列中查詢某個元素 4 param array array 要查詢的陣列 5 param int low 查詢的起始位置 6 param array high 查詢...
演算法導論之中位數和順序統計量(3)
在乙個由n個元素組成的集合中,第i個順序統計量是該集合中的第i小的元素。本章的演算法正是找出乙個互異的元素集合中的第i小的元素。單個的最小值和最大值 在乙個有n個元素的集合中,我們要確定其中最小的元素,必須要進行n 1次比較,正如minmum a 演算法顯示的這樣 minmun a min a i ...