#include < iostream > #include < limits > using namespace std;template < class T > bool MinMax(T w[], int n, T & Min, T & Max) ... { //寻找w[0:n-1]中的最小和最大值 //如果少于一个元素,则返回false //特殊情形:n<=1 if(n<1) return false; if(n==1) ...{ Min = Max = 0; return true; } //对Min和Max进行初始化 int s; if(n%2) ...{ Min = Max = 0; s = 1; } else ...{ if(w[0] > w[1]) ...{ Min = 1; Max = 0; } else ...{ Min = 0; Max = 1; } s = 2; } //比较余下的数对 for(int i = s; i <= n-1; i += 2) ...{ //寻找w[i]和w[i+1]中的较大者 //然后将较大者与w[Max]进行比较 //将较小者与w[Min]进行比较 if(w[i] > w[i+1]) ...{ if(w[i] > w[Max]) Max = i; if(w[i+1] < w[Min]) Min = i + 1; } else ...{ if(w[i+1] > w[Max]) Max = i + 1; if(w[i] < w[Min]) Min =i; } } return true;} int main() ... { int w[8] = ...{96, 15, 26, 17, 6, 85, 56, 18}; int imin=0, imax=0; for(int i = 0; i <= 7; ++i) cout<<w[i]<<" "; cout<<endl; MinMax(w, 8, imin, imax); cout<<"Min: "<<w[imin]<<endl; cout<<"Max: "<<w[imax]<<endl; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(),' '); cin.get(); return 0;}