C++代码 实现基于有序顺序表的折半查找算法
时间: 2024-01-21 15:16:09 浏览: 84
请写出对有序表进行折半查找的非递归算法.doc
以下是基于有序顺序表的折半查找算法的 C++ 代码实现:
```cpp
#include <iostream>
using namespace std;
// 折半查找函数
int binarySearch(int arr[], int n, int x)
{
int left = 0, right = n - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] == x)
return mid;
else if (arr[mid] < x)
left = mid + 1;
else
right = mid - 1;
}
return -1; // 表示未查找到
}
int main()
{
int arr[] = {1, 3, 5, 7, 9, 11};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 5;
int index = binarySearch(arr, n, x);
if (index != -1)
cout << "元素 " << x << " 在数组中的下标为:" << index << endl;
else
cout << "未找到元素 " << x << endl;
return 0;
}
```
其中,`binarySearch` 函数接收三个参数:有序顺序表 `arr`、元素个数 `n` 和待查找的元素 `x`,并返回 `x` 在 `arr` 中的下标。如果未找到,则返回 -1。
代码中使用了一个 `while` 循环来执行折半查找算法。每次循环时,先计算中间位置 `mid`,然后比较 `arr[mid]` 和 `x` 的大小关系,根据结果更新左边界 `left` 或右边界 `right`,最终在循环结束时返回查找结果。
在 `main` 函数中,我们定义了一个有序顺序表 `arr`,并调用 `binarySearch` 函数来查找元素 5 在 `arr` 中的下标。如果找到,则输出下标;否则输出未找到的信息。
阅读全文