1. 问题
写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.按实验模板编写,“分析”部分仅给出复杂度
结果即可
2. 解析
3. 设计
void SequenceSearch(int key, int n) {//顺序查找
for (int i = 1; i <= n; i++)
if (t[i] == key)
{
cout << "利用顺序查找成功,下标为" << i << endl;
return;
}
cout << "查找失败";
return;
}
void BinarySearch(int key, int n) {//二分查找
int left = 1;
int right = n;
while (left <= right) {
int m = (left + right) / 2;
if (key == t[m]) {
cout << "二分查找成功下标为:" << m << endl;
return;
}
else if (key < t[m])
right = m - 1;
else
left = m + 1;
}
cout << "查找失败";
return;
}
4. 分析
顺序查找:时间复杂度为O(n)
二分查找:时间复杂度为O(log2n)
5. 源码
https://github.com/moshang1113/SearchAlgorithm