順序查找(Linear Search),又稱線性查找,是最基礎的查找算法。它不要求數據有序,適用於任意序列,但時間複雜度為 O(n),在大數據量時效率較低。
從序列第一個元素開始,依次將每個元素與目標值比較:
#include <stdio.h>
#include <stdlib.h>
int orderSearch(int a[], int n, int target) {
for (int i = 0; i < n; i++) {
if (a[i] == target)
return 1; // 找到返回 1
}
return 0; // 未找到返回 0
}
int main() {
int a[8] = {32, 12, 56, 78, 76, 45, 43, 98};
int val, ret;
printf("原始序列:\n");
for (int i = 0; i < 8; i++)
printf("%d\t", a[i]);
printf("\n請輸入所要查找的元素(輸入非數字退出):\n");
while (scanf("%d", &val) == 1) {
ret = orderSearch(a, 8, val);
if (ret == 1)
printf("查找成功!\n");
else
printf("查找失敗!\n");
printf("請繼續輸入:");
}
return 0;
}
原始序列: 32 12 56 78 76 45 43 98 請輸入所要查找的元素:78 查找成功! 請輸入所要查找的元素:5 查找失敗!
| 特性 | 順序查找 | 二分查找 |
|---|---|---|
| 數據要求 | 無序/有序均可 | 必須有序 |
| 時間複雜度 | O(n) | O(log n) |
| 實現難度 | 簡單 | 稍複雜 |
| 適用場景 | 小數據量、無序數據 | 大數據量、有序靜態數據 |
對於頻繁查找的場景,可考慮: