自己随便写的,如果大家有更优化的算法,希望留下评论或链接,非常感谢~~~

int half_search(int num, int arr[], int len){
 int start = 0, end = len-1;
 int index = 0;
 while(start <= end){
  index = start + (end-start)/2;     //不用 (end+start)/2 是为了防止溢出,

// index = start + (end-start)>>1;     //这样可能更快
  if(num == arr[index]){
   printf("We found this num: %d/n", arr[index]);
   return 1;
  }else if(num > arr[index]){
   start = index + 1;
  }else{
   end = index - 1;
  }
 }
 printf("Couldn&apos;t found this num: %d/n", num);
 return 0;
}

转载于:https://www.cnblogs.com/secbook/archive/2008/07/21/2655468.html

二分查找算法的C/C++实现相关推荐

  1. 二分查找算法的一点改进

    在计算机科学中,二分查找,是一种在有序数组中查找某一特定元素的搜索算法.这种搜索算法每一次比较都使搜索范围减半.第一篇二分查找的论文发表于1946年,然而第一个没有bug的二分查找算法却是在1962年 ...

  2. 二分查找算法的两种实现方式:非递归实现和递归实现

    二分查找的条件是对一组有序数组的查找,这一点很容易忘记,在使用二分查找的时候先要对数组进行排序. 先说一下二分查找的思路:一个有序数组,想要查找一个数字key的下标,首先算出中间下标mid,利用mid ...

  3. 二分查找算法为什么要先排序

    其实二分查找算法就和我们在一个英文字典中找一个单词一样,比如要找middle这个单词,先把字典翻到大概中间的位置,那么现在字典就被分成两个部分了,middle这个单词要么在第一个部分,要么在第二个部分 ...

  4. LeetCode面试刷题技巧-二分查找算法代码思路解析

    二分查找的思想 提及二分查找算法,我想大部分人都不陌生,就算不是学计算机的,基本上也都使用过二分查找的思想,不信的话,且听我慢慢为你道来. 不知道你有没有玩过这样一个游戏,猜数字.就是说一个人心里想了 ...

  5. Python 二分查找算法

    如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76 ...

  6. 二分查找算法(递归与非递归两种方式)

    首先说说二分查找法. 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回1,失败返回对应的数组下标. 采用非递归方式完成二分查找法.java代码如下 ...

  7. JavaScript实现binarySearch二分查找算法(附完整源码)

    JavaScript实现binarySearch二分查找算法(附完整源码) Comparator.js完整源代码 binarySearch.js完整源代码 binarySearch.test.js完整 ...

  8. 二分查找算法及其变种

    前言 二分查找算法也称为折半查找算法,是一种在查找算法中普遍使用的算法.其算法的基本思想是:在有序表中,取中间的记录作为比较关键字,若给定值与中间记录的关键字相等,则查找成功:若给定的值小于中间记录的 ...

  9. 顺序查找与二分查找算法

    顺序查找算法 顺序查找是非常简单常用的查找算法,基本思路:从第一个元素m开始逐个与需要查找的元素x进行比较,当比较到元素值相同(即m=x)时返回元素m的下标,如果比较到最后都没有找到,则返回-1.该算 ...

  10. 递归与分治——二分查找算法(折半查找算法)

    二分搜索主要解决的问题是确定排序后的数组中是否包含目标元素val. 二分搜索通过持续跟踪数组中包含元素val的范围.分为两个过程,第一就是找到了,第二个就是没找到: 一开始,这个范围是整个数组,然后通 ...

最新文章

  1. 让人头痛的大事务问题到底要如何解决?
  2. java类中定义索引器,C#面向对象基础——字段、属性和索引器
  3. [YTU]_1066 ( 输入n个数和输出调整后的n个数)
  4. caffe中mnist数据集的运行
  5. java 类之间转换,java数据类型之间转换应用方法
  6. 【2017-04--28】Winform中ListView控件
  7. ASP.NET【3】--ASHX
  8. 从零实现深度学习框架——Softmax回归中的数值稳定
  9. IT人喝酒不同岗位不同姿态,最服运维!
  10. 带通滤波器中心频率带宽matlab,带通滤波器频率设置
  11. 人性的弱点【我要喜欢你】
  12. 华为p20nfc怎么复制门禁卡_新功能上线!你的手机NFC也可以当门禁卡使用
  13. 《NVMe-over-Fabrics-1_0a-2018.07.23-Ratified》阅读笔记(3)-- 命令
  14. 仿知乎客户端的白天黑夜主题切换
  15. JavaScript “佛祖保佑 永无bug”
  16. Tableau Desktop连接MongoDB
  17. ESP32学习(3):ESP32上运行ILI9341驱动LCD
  18. 计算机网络专用术语基本概念
  19. 跟叶子学把妹——教程序猿把妹第三集
  20. java生成二维码图片(有logo),并在图片下方附文字

热门文章

  1. 人生不值得,我在用python.1_关于python
  2. 从JDK源码看关闭钩子
  3. pipeline(管道的连续应用)
  4. Golang sync.Map 简介与用法
  5. 认识目标文件的格式—— a.out COFF PE ELF
  6. C/C++ 获取本地日期时间常见方法
  7. H3C 模拟器 pc与sw直连 开启telnet
  8. 编写绘图代码的技巧(二)
  9. [转帖]Cookies和Session的区别和理解
  10. Struts2.x教程(一) Struts2介绍