顺序表的折半查找算法,并测试验证显示序号 c++
时间: 2023-11-28 15:49:27 浏览: 82
BinarySearch_C++_算法_折半查找_
顺序表的折半查找算法可以分为以下几个步骤:
1. 计算中间位置 mid,mid = (low + high) / 2
2. 将中间位置的值与待查找值进行比较
3. 如果中间位置的值等于待查找值,则返回 mid
4. 如果中间位置的值大于待查找值,则在左半部分继续查找,high = mid - 1
5. 如果中间位置的值小于待查找值,则在右半部分继续查找,low = mid + 1
6. 重复执行上述步骤,直到找到待查找值或者 low > high
下面是一个 C++ 实现示例:
```c++
#include <iostream>
using namespace std;
int binarySearch(int arr[], int n, int x)
{
int low = 0, high = n - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (arr[mid] == x) {
return mid;
}
else if (arr[mid] > x) {
high = mid - 1;
}
else {
low = mid + 1;
}
}
return -1;
}
int main()
{
int arr[] = { 1, 3, 5, 7, 9 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = 5;
int index = binarySearch(arr, n, x);
if (index == -1) {
cout << "Element not found" << endl;
}
else {
cout << "Element found at index " << index << endl;
}
return 0;
}
```
在这个示例中,我们定义了一个 `binarySearch` 函数来执行折半查找算法。我们使用 `low` 和 `high` 变量来跟踪待查找值的范围,并在每次迭代中计算中间位置 `mid`。然后,我们将中间位置的值与待查找值进行比较,并根据比较结果更新 `low` 或 `high` 的值,以缩小待查找值的范围。如果最终找到了待查找值,则返回其索引;否则,返回 -1 表示未找到。
在这个示例中,我们测试了在数组 `{ 1, 3, 5, 7, 9 }` 中查找值为 5 的元素。程序输出了 "Element found at index 2",这意味着元素 5 在数组中的位置为 2。
阅读全文