首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言基礎

C語言順序查找算法詳解與代碼實現

     編輯:C 語言基礎

什麼是順序查找?

順序查找(Linear Search),又稱線性查找,是最基礎的查找算法。它不要求數據有序,適用於任意序列,但時間複雜度為 O(n),在大數據量時效率較低。

算法基本原理

從序列第一個元素開始,依次將每個元素與目標值比較:

  • 若相等,查找成功,返回結果
  • 若遍歷完所有元素仍無匹配,查找失敗

完整 C 語言代碼實現

#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
查找失敗!

結果分析

  • 查找 78:序列中存在,遍歷到第 4 個元素(下標 3)時匹配,返回成功
  • 查找 5:遍歷完 8 個元素均不匹配,返回失敗

順序查找 vs 二分查找

特性順序查找二分查找
數據要求無序/有序均可必須有序
時間複雜度O(n)O(log n)
實現難度簡單稍複雜
適用場景小數據量、無序數據大數據量、有序靜態數據

優化建議

對於頻繁查找的場景,可考慮:

  • 將數據排序後改用二分查找
  • 使用雜湊表(Hash Table)實現 O(1) 平均查找
  • 對於有序數組,可使用哨兵優化減少邊界判斷
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved