数据结构定义和算法--二分查找01

定义

二分查找是对一个有序数据集合,每次通过对中间数据进行比较使查找区间减半,直到找到目标元素或者查找区间变为零。

时间复杂度

  1. 时间复杂度为O(logn);
  2. 有时候O(logn)比O(1)还要快,因为有常数项;

如何实现

  1. 循环实现:注意循环退出的条件是start <= end,而不是start < end;mid = start + (end - start) / 2,而不是用 (start + end) / 2;
  2. 递归实现:start和end更新,start = mid + 1以及end = mid - 1;mid = start + (end - start) / 2可以写成mid = start + ((end - start) >> 2);

使用条件

  1. 二分查找依赖的是顺序表结构,即数组;
  2. 二分查找针对的是有序数据,因此只能用在删除和插入操作不频繁,一次排序多次查找的场景中;
  3. 数据量太小就不适合二分查找,与直接遍历相比效率提升不明显;但有一个例外就是比较操作比较贵的时候,还是用比较操作少的二分查找比较好;
  4. 数据量太大也不适合用二分查找,因为二分查找依赖数组(这个需要连续空间),大规模的数据往往无法找到对应的连续内存;

《数据结构与算法之美》 -- 王争

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值