美文网首页
二分法算法

二分法算法

作者: 开发界小学生 | 来源:发表于2018-09-06 15:27 被阅读0次

    递归二分法

    // 递归算法

    int recrbinary(int * a,int key ,int low, int high)
    {
        int mid;
        if (low > high) {
            return - 1;
        }
        mid = (low + high) / 2;
        if (a[mid] == key) {
            return mid;
        }else if (a[mid] > key)
        {
            return recrbinary(a, key, low, mid - 1);
        }else
        {
            return recrbinary(a, key, mid + 1, high);
        }
    }
    ###非递归算法
    int binary(int * a, int key, int n)
    {
        int left = 0, right = n - 1, mid = 0;
        
        mid = (left + right) / 2;
        while (left < right && a[mid] != key) {
            if (a[mid] < key)
            {
                if (a[mid] < key) {
                    left = mid + 1;
                }else if (a[mid] > key){
                    right = mid - 1;
                }
                mid = (left + right) / 2;
            }
        }
        if (a[mid] == key) {
            return mid;
        }
        return -1;
    }
    

    相关文章

      网友评论

          本文标题:二分法算法

          本文链接:https://www.haomeiwen.com/subject/dwjxgftx.html