二分查找

来源:互联网 发布:mac装win7未能启动 编辑:程序博客网 时间:2024/06/06 07:28

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x

class Test{public:int binary_search(int* arr, int len, int goal){    int low = 0;    int high = len -1;    while (low <= high)    {        int middle = (high - low) / 2 + low;     // 直接使用(high + low) / 2 可能导致溢出        if (arr[middle] == goal)            return middle;        //在左半边        else if (arr[middle] > goal)            high = middle - 1;        //在右半边        else            low = middle + 1;    }    //没找到    return -1;}};int main(){    int arr[10] = {11,23,34,45,67,78,89,90,100,114};    int len = sizeof(arr)/sizeof(arr[0]);    Test test;    cout<<test.binary_search(arr,len,34);    return 0;}
原创粉丝点击