假設現在共有 n 筆資料,循序搜尋法的虛擬碼大致如下:
void linearsearch(Type data[1..n], Type search) { Index i; for (i = 1 to n) { if (data[i] = search) { print i; return; } } print "Not found"; }
由於循序搜尋法會依序比對每一筆資料,所以其最大搜尋時間(最壞情況)為資料大小 n,就算是平均搜尋時間也有 n / 2。
我們可以發現到,循序搜尋法的搜尋時間會與資料量 n 成正比。所以這種搜尋演算法效率並不高,一般來說並不太實用。
以下是使用 C 語言的實作:
#include <stdio.h> #include <stdlib.h> int linearsearch(int[], int); int n; int main(void) { int i, search, ans; int* data; printf("請輸入資料筆數: "); scanf("%d", &n); // 動態分配記憶體 data = malloc(sizeof(int) * n); for (i = 0; i < n; i++) { printf("請輸入第 %d 筆資料: ", i + 1); scanf("%d", &data[i]); } printf("請輸入欲搜尋的資料: "); scanf("%d", &search); // 呼叫函式進行搜尋 ans = linearsearch(data, search); if (ans < 0) { printf("找不到 %d\n", search); } else { printf("在第 %d 筆資料找到 %d\n", ans + 1, search); } // 釋放記憶體空間 free(data); system("pause"); } int linearsearch(int data[], int search) { int i; for (i = 0; i < n; i++) { if (data[i] == search) { return i; } } return -1; }
0 回覆:
張貼留言