二分查找算法

  1. 举例:
    现在我们来玩一个猜数的游戏,假设有一个人要我们猜0-99之间的一个数。那么最好的方法就是从0-99的中间数49开始猜。如果要猜的数小于49,就猜24(0-48的中间数);如果要猜的数大于49,就猜74(50-99的中间数)。重复这个过程来缩小猜测的范围,直到猜出正确的数字。二分查找的工作方法类似于此。
  2. 条件:二分查找操作的数据集是一个有序的数据集。在有序数组中用到较为频繁的一种算法。二分查找能应用于任何类型的数据,只要能将这些数据按照某种规则进行排序。但必须保证数据集始终有序,否则维护数据集有序的成本更高。所以该算法处理那些频繁插入和删除操作的数据集时不太高效。因此,当待搜索的集合是相对静态的数据集时,此时使用二分查找是最好的选择。
  3. 优点:
    时间复杂度:O(lgn)
    空间复杂度:O(1)
    如果不使用二分算法直接对数组进行遍历,跟每个元素进行比较,其时间复杂度为O(n)。但是二分查找算法则更优,因为其查找的时间复杂度为O(lgn),比如数组{1,2,3,4,5,6,7,8,9}。需要查找元素,用二分查找的算法执行的话,其顺序为:
    第一步:查找中间元素,即为5。由于5<6,则6必然在5之后的数组元素中,那么就在{6,7,8,9}查找;
    第二步:寻找{6,7,8,9}的中位数,选7。由于7>6,则6应该在7左边的数组元素中,那么只剩下6,即找到了。
    实质:不断地将有序数据集进行对半分割,并检查每个分区的中间元素。
    leetcode对应题型:
    https://leetcode-cn.com/problems/median-of-two-sorted-arrays/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值