c++折半查找法从一个一维数组中寻找指定的一个数,若找到,则返回该数在数组中的相对位置;否则,返回-1。数组大小(不超过100)、待查找元素由键盘输入;数组元素随机产生(0-99),用函数实现。Srand()I: 0~n a[i] = rand()%100折半查找:有序71013 1619293233374143A[0]A[1]23456789A[10]Low = 0 high=10 Mid Key > a[mid] low = mid+1Key < a[mid] high = mid -1 找11,11<29, high
时间: 2023-12-03 07:45:06 浏览: 139
以下是折半查找的C++代码:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int binarySearch(int arr[], int n, int key) {
int low = 0;
int high = n - 1;
while (low <= high) {
int mid = (low + high) / 2;
if (key == arr[mid]) {
return mid;
} else if (key > arr[mid]) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
int main() {
int n;
cout << "请输入数组大小:";
cin >> n;
int arr[100];
srand(time(NULL));
for (int i = 0; i < n; i++) {
arr[i] = rand() % 100;
cout << arr[i] << " ";
}
cout << endl;
int key;
cout << "请输入要查找的数:";
cin >> key;
int result = binarySearch(arr, n, key);
if (result == -1) {
cout << "未找到该数!" << endl;
} else {
cout << "该数在数组中的位置为:" << result << endl;
}
return 0;
}
```
程序首先输入数组大小n,然后利用随机数生成0-99之间的n个数,并输出这些数。接着,程序要求输入要查找的数key。最后,调用binarySearch函数进行折半查找,并输出结果。
阅读全文