排序算法四:折半查找(二分查找)

折半查找(二分查找)

  • 时间复杂度

1.数据必须有序

#include 

using namespace std;

int BinarySearch(int *,const int,const int);

int main()
{
    int array[]{1,2,3,4,5,6,7,8,9,10};
    int numIndex = 7;
    int result;
    result = BinarySearch(array,10,numIndex);
    if(result == -1){
        cout<<"没找到!"<x){
            high = midIndex-1;
        }

    }
    return -1;
}

此为从小到大排序查找

从大到小代码核心代码为
if(a[midIndex] == x){
            return midIndex;
        }else if(a[midIndex]x){
            high = midIndex-1;
        }

时间复杂度

假设总共有N个元素:
1 次折半: 还剩 N/2 个元素,
2 次折半: 还剩 N/4 个元素,
3 次折半: 还剩 N/8 个元素,
……
K 次折半: 还剩 N/2k 个元素,

最坏的情况:第 K 次折半后还剩一个元素,即:
N/2k = 1
2k = N
k = log2N
所以最坏为:O(log2N) 也可以表示为:O(logN)

最好情况:O(1)

你可能感兴趣的:(数据结构--C++描述,c++)