二分查找(Binary Search):

 二分查找又称折半查找,它是一种效率较高的查找方法。

 二分查找要求:线性表是有序表,即表中结点按关键字有序,并且要用向量作为表的存储结构。不妨设有序表是递增有序的。

实例:二分法查找有序表中最接近的数值

/*** 二分法查找递增表中最接近的数* @return* - 数组下标 成功* - -1 失败*/
int txpb_binarey_search_ex(unsigned long long *pstArray, int iLength, unsigned long long ullTime)
{    int middle = 0;    int low = 0, high = iLength - 1;    if(!pstArray  || iLength < 1)    {       printf("%s %d error !\n", __func__, __LINE__);        return -1;    }if(iLength == 1)    {        return iLength - 1;   }if(ullTime <= pstArray[0]) {    return 0;}   else if(ullTime >= pstArray[iLength - 1])  {      return iLength - 1;  }while(low <= high) {            middle = (low + high)/2;  if(abs(pstArray[middle+1] - ullTime) > abs(pstArray[middle] - ullTime)) {        high = middle - 1;    }      else  {         low = middle + 1;    }         }          return (abs(pstArray[middle+1] - ullTime) > abs(pstArray[middle] - ullTime)) ? middle : (middle+1);
}
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{int i;unsigned long long pstArray[] = {2,5,7,20,32,89,120,123, 500};unsigned long long val = 33;int len = sizeof(pstArray)/sizeof(unsigned long long);for(i = 0; i < len; i++){printf("pstArray[%d]=%llu \n", i, pstArray[i]);}i = txpb_binarey_search(pstArray, len, val);printf(">>> Find index of '%llu' : %d \n", val, i);return 0;
}

测试结果:

pstArray[0]=2
pstArray[1]=5
pstArray[2]=7
pstArray[3]=20
pstArray[4]=32
pstArray[5]=89
pstArray[6]=120
pstArray[7]=123
pstArray[8]=500
>>> Find index of '33' : 4

二分法查找有序表中最接近的数值相关推荐

  1. 二分法查找是基于有序_利用二分法查找有序数组中是否含有给定Value

    //利用二分法查找有序数组中是否含有给定Value class AlgorithmByZXQ { /// /// 二分法查找数组中某一数值 /// /// /// /// /// /// public ...

  2. c语言中的数组二分法排序程序,#C语言#二分法查找有序数组

    C语言的二分法,想必很多朋友都在初学时是一个难啃的骨头,因为这是必须掌握的最基础的一种算法.在这里我分享一下这个简单的#二分法#查找有序数组 #include int binary_search(in ...

  3. 考研数据结构之查找(9.8)——练习题之编写一个函数利用二分查找算法在一个有序表中插入关键字k并保持表的有序性(C表示)

    题目 编写一个函数,利用二分查找算法在一个有序表中插入一个关键字k,并保持表的有序性. 分析 先在有序表中利用二分查找算法查找关键字值等于或小于k的结点,m指向正好等于k的结点或l指向关键字正好大于k ...

  4. 查找雇员表中姓王的员工JAVA_SQLSERVER2008实用教程实验参考答案(实验4)

    实验4 数据库的查询和视图 一.SELECT语句的基本使用 1. 查询Employees表中所有数据 2. 查询Employees表中指定字段数据 3. 查询Employees表中的部门号和性别,要求 ...

  5. 二分法查找有序序列元素

    二分法查找数组中某个元素 一.二分法思想 二.代码及结果 三.总结 一.二分法思想 对于已按照关键字排序的序列,经过一次比较后,可将序列分割成两部分,然后只在有可能包含待查找元素的一部分中继续查找,并 ...

  6. C语言-查找顺序表中的最大值

    [问题描述] 编写算法:在顺序表中查找最大值,输出最大值及其在顺序表中的位置(若出现多个相同最大值,位置为第一次出现的) [输入形式] 输入若干个整数建立顺序表.(若输入整数个数为0,则表示建立空表) ...

  7. 查找有序数组中某个数首次出现的位置

    为什么80%的码农都做不了架构师?>>>    给定一个排序的数组,找出数组中某个元素第一次出现的位置.如果没有找到返回-1. 某次面试时遇到这个题.当时用循环形式的二分查找做的,解 ...

  8. 10-123 A3-3查找产品表中最低的单价

    分数 20 全屏浏览题目 切换布局 作者 柯海丰 单位 浙大城市学院 在产品表(products)中查询最低的单价(UnitPrice),并重命名为minUnitPrice 提示:请使用SELECT语 ...

  9. 10-245 A4-6查找订单表中特定顾客编号的相关信息

    分数 20 全屏浏览题目 切换布局 作者 柯海丰 单位 浙大城市学院 查询订单表(orders)中以字母V打头的顾客编号(CustomerID)产生的订单信息,结果显示为顾客编号(CustomerID ...

最新文章

  1. Linux下使用Opencv打开笔记本摄像头
  2. 部署Office Web Apps Server并配置其与SharePoint 2013的集成
  3. 微软将终止免费的条码标签服务
  4. Python | 如何强制除法运算为浮点数? 除数一直舍入为0?
  5. 从后台servlet中,获取jsp页面输入的值,来删除用户一行信息
  6. python基础学习
  7. IP归属地查询API
  8. 计算机国际标准编码,【计算机基础】常用编码格式
  9. 机器学习10大经典算法
  10. python画球员传球图_Python实现NBA投篮数据可视化!看看球星们的投篮热点
  11. ESN学习笔记——echotorch(2)narma10
  12. Web前端页面访问权限控制总结
  13. php图片指纹获取,指纹识别是通过什么等物理传感器获取指纹图像
  14. 职称计算机初级应知应会书,职称计算机考试用书
  15. 它是一个完全可以代替知网的精品网站
  16. 灵魂拷问:Java的可变参数究竟是怎么一回事?
  17. 短视频是一种值得被鼓励的创作形式么?
  18. 大厂秋招_春招面试全流程如何拿到大厂offer?Java进阶图谱
  19. Python聊天工具
  20. Mac彻底删除Python

热门文章

  1. struts2、hibernate工作原理和流程
  2. aria-label及aria-labelledby应用//////////[信息无障碍产品联盟]
  3. SF :Salesforce中,look up 和 master detail关系
  4. 发送当前IP到我的手机
  5. Installing Flex Data Services on JBoss
  6. 11g DG中的参数
  7. 你的努力终将被光芒环绕
  8. React性能优化记录(不定期更新)
  9. 微服务之springCloud-docker-feign配置(五)
  10. 招聘启事的正确阅读方式您知多少?