寻找最大值最小值

主要的做法是,成对的比较元素

而不是将每一个元素与当前的最小值或最大值进行比较

#include <iostream>
using namespace std;
 
//同时找出最大值最小值
void MaxAndMin(int array[], int size, int &max, int &min)
{
    if (size/2 *2 == size)//偶数
    {
        if (array[0] < array[1])
        {
            min = array[0];
            max = array[1];
        }
        else
        {
            min = array[1];
            max = array[0];
        }        
    }
    else//奇数
    {
        max = array[0];
        min = array[0];
    }
    //成对比较,小的与当前最小值比,大的与当前最大值比
    for (int i=2; i<size; i=i+2)
    {
        if (array[i] <= array[i+1])
        {
            if (array[i] < min)
            {
                min = array[i];
            }
            if (max < array[i+1])
            {
                max= array[i+1];
            }
        }
        else
        {
            if (array[i+1] < min)
            {
                min = array[i+1];
            }
            if (max < array[i])
            {
                max= array[i];
            }
        }
    }
}

void main()
{
    int Array[10] = {4, 1, 3, 2, 6, 9, 10, 5, 8, 7};
 
    int max = 0, min = 0;
    MaxAndMin(Array, sizeof(Array)/sizeof(Array[0]), max, min);
 
    cout << "Max: " << max << "		" << "Min: " << min << endl;

    system("pause");
}

 2015 @4.17 修改代码细节

原文地址:https://www.cnblogs.com/sevenPP/p/3662097.html