请使用C++编程实现折半查找算法的查找应用。 说明:先随机生成数,随机数面数按由小到大顺序产生n(由输入取得且n>0,例n=16)个数值放入数组,先显示此16个数个值再利用折半查找算法来查找输入数值,并显示其查找结果(其所在位置及比较次数)。若查无此数,则显示查无此数及比较次数
时间: 2024-12-22 09:12:41 浏览: 10
利用随机函数产生30000个随机整数,进行顺序查找、折半查找(静态)、以及二叉排序树查找(动态)(VisualC++)
在C++中,我们可以首先创建一个函数`binarySearch`来实现折半查找算法。下面是一个简单的示例,包含了生成随机数、排序数组、查找以及打印结果的部分:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
// 折半查找函数
int binarySearch(const std::vector<int>& arr, int target, int low, int high) {
if (low > high)
return -1; // 如果目标不在数组范围内,返回-1
int mid = low + (high - low) / 2;
// 比较中间元素和目标
if (arr[mid] == target)
return mid;
else if (arr[mid] < target)
return binarySearch(arr, target, mid + 1, high);
else
return binarySearch(arr, target, low, mid - 1);
}
int main() {
const int n = 16; // 数组长度
srand(time(0)); // 设置随机种子
std::vector<int> nums(n);
for (int i = 0; i < n; ++i) {
nums[i] = rand() % n; // 随机生成0到n-1之间的整数
}
// 对数组进行排序
std::sort(nums.begin(), nums.end());
std::cout << "Array elements are:\n";
for (int num : nums) {
std::cout << num << " ";
}
std::cout << "\n";
int input;
std::cout << "Enter a number to search: ";
std::cin >> input;
int position = binarySearch(nums, input, 0, n - 1);
if (position != -1) {
std::cout << "Number found at index " << position << ".\n";
} else {
std::cout << "Number not found in the array.\n";
}
return 0;
}
```
在这个程序中,我们首先生成一个大小为`n`的随机整数数组并排序。然后用户可以输入一个数字,程序会调用`binarySearch`函数查找这个数字。如果找到,就输出该位置;如果没找到,输出“查无此数”。
阅读全文