mysql实现二分法查找_快速理解二分法查找 - 起点new的个人空间 - OSCHINA - 中文开源技术交流社区...

1、什么是二分法查找?

简单粗暴一点理解二分法

(1)将数据有序排列:先将一个数据集进行有序排列(可根据某种数值的大小降序或升序,前提是需要查找的数据具备该规则同样的属性);

(2)数据分半:就是将排序好的数据集切分成大致相等的两份数据;

(3)查找数据:把排序好的数据拆分为个数大致相等的两半,因为有排序,查找的时候先和其中一半数据种的最大或者最小的数进行比较来断定要查找的数据是否会包含被分割后的一半数据种,然后在满足判定条件的数据集中一次获取数据进行比对直到找到数据或者比较完所有数据返回没有该数据,

(4)文字太苍白:用例子进行表述一下便于我们快速理解;

题目是从[5,7,2,8,4,9,1,3,6]  快速查找到X在数据种的位置:

我们先要把 [2,-3,0,5,-1,,6]   进行排序[-3,-2,0,2,5,6]    然后进行拆分data1 [-3,-2,0]      data2[2,5,8,6]

然后用查找X,是在数据中的位置,假如先从data1检索则如下:

如果x>data1[last]

则表示X不在data1 中(因为我们已经进行了排序的),则比较对象换成data2,那么我们把data2看成一个新的数据集继续进行拆分,把data2拆分成data2_1 和data2_2继续按照之前的规则进行比较,按照此规律直到找到X相同的值或者比较完data2所有的数据则返回;

如果x

则表示X绝对不会存在data2中(因为我们已经进行了排序的),可能存在data1中,那么又我们把data1看成一个新的数据集继续进行拆分,把拆data1分成data1_1 和data1_2,按照此规律直到找到X相同的值或者比较完data2所有的数据则返回;

如果x=data1[last]

那么返回data[last]的位置;

最后一张图来说明

e4371c7329f18765c8281d792d4d1e82.png

2、特点

查找的时候可以减少比对数据的数量,加快查找速度,但只适用于排序数据,对数据排序本身又会消耗时间性能;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值