编辑代码

#include <iostream>

using namespace std;

const int N = 1010;

int a[N] = {11, 9, 20, 56, 42, 3, 7, 15, 16};  //序列
int n = 9;  //序列的长度

int maxValue, minValue;  //全局的最大值和最小值

//求序列的最大值和最小值
void getMaxMin(int* a, int n, int& maxValue, int& minValue)
{
    //如果序列只有一个数,则直接返回
    if (n == 1)
    {
        maxValue = a[0];
        minValue = a[0];
        return;
    }

    // 如果序列有两个数,则直接比较得出最大值和最小值
    if (n == 2)
    {
        maxValue = max(a[0], a[1]);
        minValue = min(a[0], a[1]);
        return;
    }

    //其他情况,递归求解
    int mid = n / 2;  //中间位置
    int maxValue1, minValue1, maxValue2, minValue2;  //子序列的最大值和最小值
    getMaxMin(a, mid, maxValue1, minValue1);
	getMaxMin(a+mid, n-mid, maxValue2, minValue2);
//更新全局的最大值和最小值
maxValue = max(maxValue1, maxValue2);
minValue = min(minValue1, minValue2);
}

int main()
{
getMaxMin(a, n, maxValue, minValue);
cout << "最大值: " << maxValue << endl;
cout << "最小值: " << minValue << endl;
return 0;
}