赞
踩
什么是二分查找
二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。
时间复杂度分析
假设数据大小是 n,每次查找后数据都会缩小为原来的一半,也就是除以 2,最坏情况下,直到查找被缩小为空才停止。
可以看出来,这是一个等比数列。其中 n/2k=1 时,k 的值就是总共缩小的次数。而每一次缩小操作只涉及两个数据的大小比较,所以,经过了 k 次区间缩小操作,时间复杂度就是 O(k)。通过 n/2k=1,我们可以求得 k=log2n,所以时间复杂度就是 O(logn)。
代码实现
最简单的二分查找:就是在有序数组中不存在重复的元素。实现代码如下:
- func bsearch(arr []int, n int, target int) int {
- low := 0 height := n - 1 for low <
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。