#include <iostream>int init_array(int *array, int n);
int binary_search(int *array, int n, int key);int main()
{int array[17];int key;init_array(array, 17);std::cout << "请输入要查找的数字(0-16):" << std::endl;std::cin >> key;std::cout << "要查找的数字为:" << array[binary_search(array, 17, key)] << std::endl;return 0;
}int init_array(int *array, int n)
{for (int i = 0; i < n; ++i){array[i] = i;}return 0;
}int binary_search(int *array, int n, int key)
{int low, high, mid;low = 1;high = n;while (low <= high){mid = (low + high) / 2;if (array[mid] < key){low = mid + 1;}else if(array[mid] > key){high = mid - 1;}else{return mid;}}return 0;
}

该算法前提数组里面内容排列是有序的

算法思路:首先mid取数组中间的位置   如果要查找的key比数组中元素小那么就high = mid - 1  反之 low = mid + 1

全部代码如下:

体会大师们的智慧-折半查找二分查找)相关推荐

  1. 数据结构与算法(8-2)有序表查找(折半查找(二分查找)、插值查找)

    目录 一.折半查找(二分查找) 二.插值查找 总代码 一.折半查找(二分查找) 原理:一次次折半,不断向着查找值的位置靠近 . 适用场景:有序(必须) 流程:开始时,min标志首,max标志尾,med ...

  2. C语言之折半查找(二分查找)

    一.什么是折半查找? 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表.首先,假设表中 ...

  3. Java实现折半查找(二分查找)的递归和非递归算法

    Java二分查找实现,欢迎大家提出交流意见. /** *名称:BinarySearch *功能:实现了折半查找(二分查找)的递归和非递归算法. *说明: *     1.要求所查找的数组已有序,并且其 ...

  4. Python查找-二分查找

    Python查找-二分查找 二分查找 折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务. 它的基本思想是,将n个元素分成个数大致相 ...

  5. 【Golang第6章:排序和查找】golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例

    介绍 这个是在B站上看边看视频边做的笔记,这一章是GO语言的排序和查找 有golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例,具体请看[文章目录] 配套视频自 ...

  6. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  7. 数据结构 | 折半查找 /二分查找 算法细节、二分查找判定树

    一.基本思想 假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功:否则利用中间位置记录将表分成前.后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步 ...

  8. 理论基础 —— 查找 —— 二分查找

    [概述] 二分查找又称折半查找,其要求线性表中的记录必须按关键码有序,且必须采用顺序存储. 其基本思想是:用给定值 k 先与中间结点的关键字比较,中间结点把线形表分成两个子表,若相等则查找成功:若不相 ...

  9. 冒泡排序 | 快速排序 | 线性查找 | 二分查找等

    目录 排序算法:冒泡排序 排序算法:快速排序 数组的复制.反转.查询(线性查找.二分查找) 排序算法:冒泡排序 public static void main(String[] args){int[] ...

最新文章

  1. 图像分类经典项目:基于开源数据集Fashion-MNIST的应用实践
  2. python mqtt tls_python mqtt使用
  3. LiveData使用和生命感知原理
  4. linux定时执行python脚本_linux定时执行python脚本的方法以及失败不执行的处理方法...
  5. ActiveMQ点对点的发送和接收
  6. 软件开发过程中的思维方式 -- 如何分析问题
  7. 开发工具 快捷键整理
  8. 【Leetcode】33. 搜索旋转排序数组
  9. ios 自定义字体_如何仅用几行代码在iOS应用中创建一致的自定义字体
  10. Android生命周期函数执行顺序
  11. 一加桌面3.0 android8,一加手机XRemix6.0安卓8.1.0Beta2.0定制本地化增强适配归属农历等...
  12. 学前端可以做哪些功能?
  13. windows环境下面安装neo4j出错记录
  14. 39. 二叉树的深度(C++版本)
  15. 自动控制原理8.3---相平面法
  16. Linux vim编辑器在哪,【Linux】Linux中VIM编辑器的使用
  17. 小米php架构图,小米商城基本框架部分
  18. 远程桌面管理助手有哪些?11款最好的远程桌面软件推荐。
  19. Linux命令:常用进程查看命令
  20. 7-6 厘米换算英尺英寸 (15 分)

热门文章

  1. 2021 CSP-S 初赛知识补天
  2. MATLAB仪表示数读书识别GUI设计
  3. 泛函分析笔记06:Lp与lp空间
  4. 《计算之魂》思考题4.3
  5. CMake Error: The current CMakeCache.txt directory is different than the other
  6. 身份证识别OCR 应用技术及应用行业
  7. Python绘制小红花
  8. android 设置webview的浏览器标识 User-Agent
  9. java记录访问次数_使用java中的session来记录访问次数
  10. php ean13,php生成EAN_13标准条形码实例_php实例