C++二分法在数组中查找关键字的方法

下面是“C++二分法在数组中查找关键字的方法”的完整攻略。

什么是二分法查找?

二分法查找(Binary Search),也称折半查找,是一种基于比较目标值与数组中间元素的常见查找算法。

如何在数组中使用二分法查找?

以下步骤描述如何在有序数组中使用二分法查找关键字:

  1. 定义左右边界:left = 0; right = 数组长度 - 1
  2. 循环 while (left <= right)
  3. 取数组的中间元素:mid = (left + right) / 2
  4. 如果中间元素等于要查找的关键字,返回 mid
  5. 如果中间元素小于要查找的关键字,此时关键字一定在 mid 的右侧,更新 left = mid + 1
  6. 如果中间元素大于要查找的关键字,此时关键字一定在 mid 的左侧,更新 right = mid - 1
  7. 若循环结束仍未找到关键字,返回 -1

二分法查找的时间复杂度和空间复杂度?

二分法查找的时间复杂度为 O(log n),其中 n 为数组的长度。

空间复杂度为常量级别,即 O(1)。

二分法查找的关键代码实现示例

int binarySearch(int* arr, int len, int target) {
    int left = 0, right = len - 1;
    while (left <= right) {
        int mid = (left + right) / 2;
        if (arr[mid] == target) {
            return mid;
        }
        else if (arr[mid] < target) {
            left = mid + 1;
        }
        else {
            right = mid - 1;
        }
    }
    return -1;
}

以上代码中,arr 表示有序数组,len 表示数组长度,target 表示要查找的关键字。

示例1:在有序数组中查找目标值

假设有一个有序数组 {1, 3, 5, 7, 9, 11},现在要查找数字 7 在数组中的索引位置。

int arr[] = {1, 3, 5, 7, 9, 11};
int target = 7;
int len = sizeof(arr) / sizeof(int);
int index = binarySearch(arr, len, target);
if (index != -1) {
    printf("目标值在数组的第 %d 个位置\n", index + 1);
}
else {
    printf("数组中未找到目标值\n");
}

输出结果为:

目标值在数组的第 4 个位置

示例2:在有序数组中查找未出现的数字

假设有一个有序数组 {2, 4, 6, 8, 10},现在要查找数字 5 在数组中的索引位置。

int arr[] = {2, 4, 6, 8, 10};
int target = 5;
int len = sizeof(arr) / sizeof(int);
int index = binarySearch(arr, len, target);
if (index != -1) {
    printf("目标值在数组的第 %d 个位置\n", index + 1);
}
else {
    printf("数组中未找到目标值\n");
}

输出结果为:

数组中未找到目标值

以上就是C++二分法在数组中查找关键字的方法的完整攻略及两条示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++二分法在数组中查找关键字的方法 - Python技术站

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

相关文章

  • Windows OpenGL ES 图像 GPUImageLookupFilter

    零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES 特效 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES …

    C语言 2023年4月18日
    00
  • python网络编程学习笔记(九):数据库客户端 DB-API

    关于“python网络编程学习笔记(九):数据库客户端 DB-API”的完整攻略,我做如下分享。 一、DB-API是什么? DB-API全称为Database Application Programming Interface,是Python标准化的数据库编程接口,其定义了一系列必须的对象和数据库操作的方法,可以用来访问各种不同的关系数据库。 在Python…

    C 2023年5月22日
    00
  • Go 语言 json解析框架与 gjson 详解

    Go 语言 json解析框架与 gjson 详解 介绍 在 Golang 中,解析 JSON 数据是一项非常常见的任务。Go提供了标准的JSON包,可以轻松地将JSON数据编组和解组。但是,在使用标准JSON包解析大型复杂JSON结构时,可能存在些许不足,例如代码冗余,性能瓶颈等问题。针对这些问题,目前有许多优秀的JSON解析框架,GJSON是其中一个很不错…

    C 2023年5月23日
    00
  • C语言实现简单的推箱子小游戏

    C语言实现简单的推箱子小游戏攻略 简介 推箱子游戏是一种经典的益智类小游戏。本攻略将介绍如何使用C语言实现简单的推箱子游戏。 程序大致流程 定义地图,使用数组保存地图信息。 根据地图信息输出地图。 玩家输入移动命令,判断是否合法。 移动箱子,更新地图信息。 输出更新后的地图。 判断是否通关。 如过关,输出相应信息,游戏结束。 程序具体实现 定义地图 首先要定…

    C 2023年5月23日
    00
  • 荣耀畅玩8c怎么截长图?荣耀畅玩8c滚动截屏方法

    荣耀畅玩8c是一款性价比比较高的手机,它内置了截屏功能来满足用户的需求,但是有时我们需要截取长图或进行滚动截屏,下面将详细讲解“荣耀畅玩8c怎么截长图?荣耀畅玩8c滚动截屏方法”的完整攻略。 荣耀畅玩8c截取长图方法 荣耀畅玩8c提供了系统自带的截屏功能,但是它只能截取屏幕内的内容,对于需要截取较长的页面就不太适用了。下面介绍一种轻松截取长图的方法。 打开需…

    C 2023年5月23日
    00
  • win10运行游戏时出现程序无法正常启动0xc0000142解决方法介绍

    “win10运行游戏时出现程序无法正常启动0xc0000142解决方法介绍” 什么是0xc0000142错误 0xc0000142错误是一种常见的Windows运行时错误,通常在尝试启动游戏或应用程序时出现。它表示软件无法正常启动,这可能是因为操作系统无法正常处理该软件的启动流程,或者软件文件或库缺失。 解决方法 以下是解决0xc0000142错误的方法: …

    C 2023年5月22日
    00
  • 将代码中的调试信息输出到日志文件中

    一、将调试信息输出到屏幕中 1.1 一般写法 我们平常在写代码时,肯定会有一些调试信息的输出: #include <stdio.h> #include <stdlib.h> int main() { char szFileName[] = “test.txt”; FILE *fp = fopen(szFileName, “r”); i…

    C语言 2023年4月17日
    00
  • C语言实现财务管理系统

    C语言实现财务管理系统攻略 1. 系统概述 本系统采用C语言编写,实现了简单的财务管理功能,包括记账、查账、统计等功能,适合个人和小型企业使用。 2. 系统设计 系统包括以下几个模块: 用户登录模块 用户登录时需要输入用户名和密码,系统会验证用户信息是否正确。如果验证通过,系统会将用户信息保存到全局变量中。 记账模块 用户可以输入收支的详细信息,包括日期、类…

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