C/C++ 循序搜尋法 Sequential Search

本篇 ShengYu 介紹 C/C++ 循序搜尋法 Sequential Search。

C/C++ Sequential Search 循序搜尋法

以下為 C/C++ 循序搜尋法的實作,要從串列 data 裡尋找數字 7,循序搜尋法是最簡單的實作方式,主要是由一個主迴圈從頭掃到尾,一個一個值拿來跟 key 作比對,一直到有比對成功救回傳索引值或者一直到結束都沒有比對成功,沒有比對成功的話就回傳 -1,範例如下,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// g++ cpp-sequential-search.cpp -o a.out -std=c++11
#include <iostream>
#include <vector>
using namespace std;

int sequential_search(const vector<int> &data, int key) {
for (int i = 0; i < data.size(); ++i) {
if (key == data[i]) {
return i;
}
}
return -1;
}

int main() {
vector<int> data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int key = 7;

for (auto &i : data)
cout << i << " ";
cout << "\n";

int ret = sequential_search(data, key);
if (ret == -1)
cout << "找不到\n";
else
cout << "找到索引值" << ret << "\n";
}

結果如下,

1
2
1 2 3 4 5 6 7 8 9 10 
找到索引值6

使用循序搜尋法時資料不需要先排序過

使用循序搜尋法前時資料不需要先排序過就可以直接搜尋了,跟二元搜尋法比較不一樣,範例如下,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// g++ cpp-sequential-search.cpp -o a.out -std=c++11
#include <iostream>
#include <vector>
using namespace std;

int sequential_search(const vector<int> &data, int key) {
for (int i = 0; i < data.size(); ++i) {
if (key == data[i]) {
return i;
}
}
return -1;
}

int main() {
vector<int> data = {1, 9, 2, 7, 4, 10, 3, 8, 5, 6};
int key = 7;

for (auto &i : data)
cout << i << " ";
cout << "\n";

int ret = sequential_search(data, key);
if (ret == -1)
cout << "找不到\n";
else
cout << "找到索引值" << ret << "\n";
}

結果如下,

1
2
1 9 2 7 4 10 3 8 5 6 
找到索引值3

其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ 二元搜尋法 Binary Search
C/C++ 新手入門教學懶人包