順序查找又叫線性查找,是最基本的查找技術,它的查找過程是:從表中第一個(或最後一個)記錄開始,逐個進行記錄的關鍵字和給定值的比較,若某個記錄的關鍵字和給定值相等,則查找成功,找到所查的記錄;如果直到最後一個(或第一個)記錄,其關鍵字和給定值比較都不等時,則表中沒有所查的記錄,查找不成功。
順序查找的算法實現:時間複雜度爲O(n)
int Sequential_Search(int *a, int n, int key)
{
int i;
for (i = 1; i <=n; i++)
if (a[i] == key)
return i;
return 0;
}
順序查找算法優化:
這種查找方向的盡頭放置“哨兵”免去了在查找過程中每一次比較後都要判斷查找位置是否越界的小技巧,看是與原先差別不大,但在總數據較多時,效率提高很大,是非常好的編碼技巧。時間複雜度還是爲O(n)。
int Sequential_Search2(int *a, int n, int key)
{
int i;
i = n;
a[0] = key;
while (a[i] != key)
i--;
return i;
}