C++实现折半查找

实现折半查找的过程可以分为以下几步:

步骤一:准备有序数组

折半查找需要在一个有序数组中进行查找,因此首先需要准备一个有序数组,可以使用C++中的std::sort来进行排序。

#include <iostream>
#include <algorithm>

int main() {
    int arr[] = {2, 3, 4, 5, 7, 9, 10, 12, 13, 14};
    int n = sizeof(arr) / sizeof(arr[0]);
    std::sort(arr, arr + n);  // 使用std::sort进行排序
    return 0;
}

步骤二:实现折半查找

折半查找的基本思路是:首先确定查找区间的左右边界,然后计算出中间位置,如果中间位置的值正好是查找的值,查找过程结束;如果中间位置的值比查找的值大,则在左半部分继续查找;否则在右半部分查找。

在C++中可以实现如下:

#include <iostream>

int binarySearch(int arr[], int n, int target) {
    int left = 0, right = n - 1;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (arr[mid] == target) return mid;  // 查找成功,返回下标
        else if (arr[mid] > target) right = mid - 1;  // 在左半部分查找
        else left = mid + 1;  // 在右半部分查找
    }
    return -1; // 查找失败,返回-1
}

int main() {
    int arr[] = {2, 3, 4, 5, 7, 9, 10, 12, 13, 14};
    int n = sizeof(arr) / sizeof(arr[0]);
    int target = 7; // 这里查找元素7
    int res = binarySearch(arr, n, target);
    if (res == -1) std::cout << "未找到该元素\n";
    else std::cout << "该元素的下标为:" << res << "\n";
    return 0;
}

通过上面两个示例代码可以看出,原数组的大小为$N$时,折半查找的时间复杂度为$O(\log N)$,比较适合对大规模有序数据进行查找。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现折半查找 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • iOS 14.3/iPadOS 14.3开发者预览版 Beta 2(18C5054c)怎么升级?

    下面是 iOS 14.3/iPadOS 14.3 开发者预览版 Beta 2 升级的完整攻略,包括两条示例说明: iOS 14.3/iPadOS 14.3 开发者预览版 Beta 2 升级攻略 1. 准备工作 在升级前,请务必备份你的设备数据以防意外情况发生。此外,为了能够顺利升级,你还需要: 确保你的设备支持升级到 iOS/iPadOS 14.3 开发者预…

    C 2023年5月23日
    00
  • C语言实现猜数字小游戏的示例代码

    下面是“C语言实现猜数字小游戏的示例代码”的完整攻略。 小游戏介绍 猜数字小游戏是一款非常简单而有趣的小游戏,游戏规则如下: 计算机随机生成一个0到100的数字,你需要通过键盘输入一个数字作为你的猜测; 如果你的猜测数字与计算机随机生成的数字一致,则恭喜你猜对了,游戏胜利; 如果你的猜测数字大于计算机随机生成的数字,则计算机会告诉你猜的数字比实际数字大; 如…

    C 2023年5月24日
    00
  • C程序 复利

    C程序 复利 使用攻略 介绍 C程序 复利 是一款基于C编写的计算复利的小工具。可以根据输入的本金、利率和时间计算出复利的本金、利息和总额。使用该工具可以方便快捷地计算不同本金、不同利率、不同时间下复利的本息和总额。 安装 下载C程序 复利 的源代码。 确认本地已经安装了C编译工具,如gcc、clang等。 打开终端,切换到C程序 复利 的源代码所在目录下。…

    C 2023年5月9日
    00
  • c++实现值机系统

    C++实现值机系统攻略 1. 确定需求 在实现值机系统之前,我们需要确定需求,具体包括以下几个方面: 登记航班信息,包括航班号、起飞时间、到达时间、起飞机场、到达机场、预计飞行时间等。 登记乘客信息,包括乘客姓名、证件类型、证件号码、航班号、座位号等。 实现在线值机功能,可以选择座位、打印登机牌等。 实现退改签功能,可以修改预定信息或取消预定。 实现管理员功…

    C 2023年5月23日
    00
  • C++编写实现图书管理系统

    C++编写实现图书管理系统的完整攻略 什么是图书管理系统 图书管理系统是一种方便图书馆或图书室管理图书的工具,可以通过计算机系统实现。 系统功能 图书管理系统的设计至少应包括以下功能: 图书信息的录入 图书信息的查询、浏览与修改 图书借阅、归还、预约与罚款管理 数量统计和管理 用户信息、权限管理 系统数据备份与恢复 开发步骤 Step 1: 掌握C++语言和…

    C 2023年5月23日
    00
  • php实现json编码的方法

    下面是关于php实现json编码的方法的详细攻略。 一、什么是json JSON是JavaScript对象表示法的缩写,是一种轻量级数据交换格式。它的特点是易于阅读和编写,同时也易于机器的解析和生成,能够更好的提高网络传输效率。 常见的JSON数据格式如下所示: { "name": "张三", "age&qu…

    C 2023年5月23日
    00
  • C语言实现合并字符串

    当我们需要将两个字符串合并为一个字符串时,可以使用C语言的字符串操作函数来实现。下面是实现合并字符串的完整攻略。 步骤一:定义存储合并后字符串的数组 首先需要定义一个数组来存储合并后的字符串。这个数组必须预先分配足够的空间来保存合并后的字符串。可以使用C语言中的malloc()函数来动态分配存储空间,或者使用静态分配的数组。 以下是利用静态数组的方式定义一个…

    C 2023年5月23日
    00
  • C++实现景区旅游信息管理系统

    C++实现景区旅游信息管理系统攻略 功能需求分析 本系统需要实现以下功能: 对景区的基本信息进行管理,包括景区名称、地址、开放时间、门票价格等; 对景点的基本信息进行管理,包括景点名称、介绍、关联景区等; 实现游客信息的管理,包括游客姓名、年龄、性别、联系方式等; 对景区和景点进行组合,实现线路的生成和管理; 对游客线路的购买和管理,包括线路查询、购票、取消…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部