算法设计:设计算法在顺序表{1,2,3,4,5,6,7,8,9,10}中采用二分查找法查找关键字9,输出查找过程。用C++代码实现
时间: 2023-08-19 20:36:54 浏览: 86
算法设计:
1. 初始化左边界 left 为 0,右边界 right 为 9。
2. 当 left <= right 时进行循环,每次循环进行以下操作:
- 计算中间位置 mid,即 mid = (left + right) / 2。
- 如果中间位置的元素等于关键字,则返回查找成功并输出查找过程。
- 如果中间位置的元素小于关键字,则将左边界 left 更新为 mid + 1。
- 如果中间位置的元素大于关键字,则将右边界 right 更新为 mid - 1。
3. 若循环结束仍未找到关键字,则返回查找失败。
C++ 代码实现:
```c++
#include <iostream>
using namespace std;
int binarySearch(int arr[], int n, int key) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
cout << "Mid: " << arr[mid] << endl;
if (arr[mid] == key) {
cout << "Found " << key << " at index " << mid << endl;
return mid;
}
else if (arr[mid] < key) {
cout << key << " is in the right half." << endl;
left = mid + 1;
}
else {
cout << key << " is in the left half." << endl;
right = mid - 1;
}
}
cout << "Could not find " << key << endl;
return -1;
}
int main() {
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int n = sizeof(arr) / sizeof(arr[0]);
int key = 9;
binarySearch(arr, n, key);
return 0;
}
```
阅读全文