二分查找
时间复杂度O(log n)
解析
存在一个有序数组
- array = [1, 3, 6, 10, 13, 20, 21, 40, 50, 55]
- len: 10
需要查询的6的位置
当第一次查找时,根据长度计算需要二分的下标 10/2 = 5, 即获取到下标为5的值为 20
20 > 目标值,则取左侧
再次执行 下标计算 5/2 = 2, 下标为2的值 6, 是目标值,则返回。
再次执行…
总结
n * (1/2)^k = 1 ==> 2^k = n ==> log(n) k 以为底的
平横二叉树与二分查找时间复杂度一样O(log n), 平衡二叉树在内存上是逻辑连续或者连续的。 以上数组在内存是一块连续的内存。也就是说明了数组查找快的原因,只需要移动内存的指针即可找到下一个
评论