- 举例:
现在我们来玩一个猜数的游戏,假设有一个人要我们猜0-99之间的一个数。那么最好的方法就是从0-99的中间数49开始猜。如果要猜的数小于49,就猜24(0-48的中间数);如果要猜的数大于49,就猜74(50-99的中间数)。重复这个过程来缩小猜测的范围,直到猜出正确的数字。二分查找的工作方法类似于此。 - 条件:二分查找操作的数据集是一个有序的数据集。在有序数组中用到较为频繁的一种算法。二分查找能应用于任何类型的数据,只要能将这些数据按照某种规则进行排序。但必须保证数据集始终有序,否则维护数据集有序的成本更高。所以该算法处理那些频繁插入和删除操作的数据集时不太高效。因此,当待搜索的集合是相对静态的数据集时,此时使用二分查找是最好的选择。
- 优点:
时间复杂度: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/
二分查找算法
最新推荐文章于 2022-07-16 14:00:00 发布