什么是二分法
二分法是一种常见的算法,也叫折半查找。它的基本思想是将一个有序的数组或列表分成两部分,然后判断目标值在哪一部分中,继续在该部分中进行查找,直到找到目标值为止。
二分法的实现
二分法的实现需要满足以下条件:
- 数组或列表必须是有序的。
- 需要定义两个指针,分别指向数组或列表的起始位置和结束位置。
- 计算中间位置,判断目标值在左半部分还是右半部分。
- 如果目标值在左半部分,将结束位置指针移动到中间位置的前一个位置。
- 如果目标值在右半部分,将起始位置指针移动到中间位置的后一个位置。
- 重复以上步骤,直到找到目标值或者起始位置指针大于结束位置指针。
- 如果找到目标值,返回该值在数组或列表中的索引,否则返回-1。
二分法的时间复杂度
二分法的时间复杂度为O(log n),其中n是数组或列表的长度。这是因为每次二分都会将数组或列表分成两部分,所以最多需要进行log n次查找。