折半查找

来源:互联网 发布:河南vb振动电机 编辑:程序博客网 时间:2024/06/06 10:46

前提条件:原记录已经有序。

时间复杂度:O(log2n)

/** * 设data已经按升序排列 * 非递归版本 */template<typename T>int binarySearch(const T *data, int n, T k){    int index = -1;    int low = 0;    int high = n - 1;    int mid;    while (low <= high)    {        mid = (low + high) / 2;        if (k == data[mid])        {            index = mid;            break;        }        else if (k > data[mid])        {            low = mid + 1;        }        else        {            high = mid - 1;        }    }    return index;}


原创粉丝点击