寻找最大值最小值
主要的做法是,成对的比较元素,
而不是将每一个元素与当前的最小值或最大值进行比较
#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 << "\t\t" << "Min: " << min << endl; system("pause"); }
2015 @4.17 修改代码细节