目录
查找算法-顺序查找法(Sequential Search)
1、说明
2、算法分析
3、C++代码
查找算法-顺序查找法(Sequential Search)
1、说明
顺序查找法又称线性查找法,是一种比较简单的查找法。它是将数据一项一项地按顺序逐个查找,所以无论数据顺序如何,都得从头到尾遍历一遍,该方法的优点是文件在查找前不需要进行任何处理与排序;缺点是查找速度比较慢。如果数据没有重复,找到数据就可以中止查找,在最差情况下是未找到数据,需要进行n次比较,在最好情况下则是一次就找到数据,只需要1次比较。
2、算法分析
- 时间复杂度:如果数据没有重复且找到数据就可以中止查找,那么在最差情况下就是未找到数据,表明进行了n次比较,因而时间复杂度为。
- 在平均情况下,假设数据出现的概率相等,则需进行次比较。
- 当数据量很大时,不适合使用顺序查找法。如果预估所查找的数据在文件前面的部分,就可以减少查找的时间。
3、C++代码
#include<iostream>
using namespace std;
void SetData(int* Data, int Size) {
for (int i = 0; i < Size; i++) {
Data[i] = rand() % 150 + 1;
}
}
void Print(int* Data, int Size) {
for (int i = 0; i < Size / 10; i++) {
for (int j = 0; j < 10; j++) {
cout << Data[i * 10 + j] << "\t";
}
cout << endl;
}
}
int SequentialSearch(int* Data, int Size, int Value) {
int index = -1;
for (int i = 0; i < Size; i++) {
if (Data[i] == Value) {
index = i;
break;
}
}
return index;
}
int main() {
int Size = 80;
int* Data = new int[Size] {0};
SetData(Data, Size);
cout << "原始数据:" << endl;
Print(Data, Size);
cout << "---------------------" << endl;
int num = 0;
cout << "请输入想要查找的数据:";
cin >> num;
int index = -1;
index = SequentialSearch(Data, Size, num);
if(index != -1)
cout << "查找的数据在数据库的第[ " << index + 1 << " ]位" << endl;
else
cout << "在数据库中没有找到该数据" << endl;
return 0;
}
输出结果