Skip to content

Binary Search

二分查找

针对有序数据的快速查找方式

对比线性查找有不小的速度提升,但是要求数据有序

  • 时间复杂度 O(log(n))
  • 空间复杂度 O(1)
C++
template<typename T>
int Binary(T* D,size_t Length,T t) {
    size_t left = 0,right = Length - 1;
    for(size_t mid = (left + right) / 2;left <= right;mid = (left + right) / 2) {
        if(D[mid] == t) {
            return mid;
        } else if (D[mid] > t) {
            right = mid - 1;
        // } else if (D[mid] < t) {
        } else {
            left = mid + 1;
        }
    } 
    return -1;
}

q