题目描述
有10个数按由小到大顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“None”
案例代码
下面是一个 C++ 的折半查找算法的示例代码,用于在有序数组中查找指定的数值:
#include <iostream>
using namespace std;
int binarySearch(int arr[], int n, int target) {
int left = 0;
int right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid + 1; // 找到了目标元素,返回它在数组中的位置(从1开始)
} else if (arr[mid] < target) {
left = mid + 1; // 目标元素在右半部分
} else {
right = mid - 1; // 目标元素在左半部分
}
}
return -1; // 没有找到目标元素
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int n = sizeof(arr) / sizeof(arr[0]);
int target;
cout << "请输入要查找的数:";
cin >> target;
int result = binarySearch(arr, n, target);
if (result != -1) {
cout << "该数在数组中的位置是:" << result << endl;
} else {
cout << "None" << endl;
}
return 0;
}
在这个示例代码中,我们定义了一个 binarySearch
函数,用于实现折半查找算法。然后在 main
函数中,我们定义了一个有序数组 arr
,并接收用户输入的目标数值 target
。然后调用 binarySearch
函数进行查找,如果找到目标数值,则输出其在数组中的位置;如果没有找到,则输出 “None”。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END