本篇 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
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
21 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
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
21 9 2 7 4 10 3 8 5 6
找到索引值3
其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ 二元搜尋法 Binary Search
C/C++ 新手入門教學懶人包