C++折半查找练习

题目描述

有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
喜欢就支持一下吧
点赞9赞赏 分享