c_cpp 使用分而治之的方法查找未排序数组中的最小值和最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 使用分而治之的方法查找未排序数组中的最小值和最大值相关的知识,希望对你有一定的参考价值。

void dc(int A[], int N, int low, int high, int &minv, int &maxv) {
    if(low > high) return;
    if(low == high)
        minv = maxv = A[low];
    else {
        int mid = (low + high) >> 1;
        int minv1 = INT_MAX, maxv1 = INT_MIN, minv2 = INT_MAX, maxv2 = INT_MIN;
        dc(A, N, low, mid, minv1, maxv1);
        dc(A, N, mid+1, high, minv2, maxv2);
        minv = min(minv1, minv2);
        maxv = max(maxv1, maxv2);
    }
}

void get_min_max(int A[], int N) {
    int minv = INT_MAX, maxv = INT_MIN;
    dc(A, N, 0, N-1, minv, maxv);
    cout << minv << ", " << maxv << endl;
}

以上是关于c_cpp 使用分而治之的方法查找未排序数组中的最小值和最大值的主要内容,如果未能解决你的问题,请参考以下文章

使用分治算法在未排序的数组中查找最大和

如何在未排序数组的情况下找到未排序数组中的第k个最小整数?

分而治之——返回数组

C语言中的分而治之二分查找

使用C使用分而治之查找数组中的多数元素

c_cpp 在三个排序的数组中查找公共元素