算法导论CLRS 9.1 最大值跟最小值
算法导论CLRS 9.1 最大值和最小值
/*9.1 最大值和最小值 *MINIMUM-MAXIMUM */ #include<cstdlib> #include<iomanip> #include<iostream> #include<vector> using namespace std; struct minmax { double min; double max; }; typedef vector<double>::iterator dvecIte; minmax fminmax(const dvecIte &iteB, const dvecIte &iteE) { // minmax mx(*iteB, *iteE); // if(iteB = iteE) return mx; double min, max; dvecIte ite = iteB; if(0==(iteE-iteB)%2) { min = *iteB>*(iteB+1) ? *(iteB+1) : *iteB; max = min!=*iteB ? *iteB : *(iteB+1); ++ite; } else max = min = *iteB; ++ite; while(iteE != ite) { double temp; temp = *ite>*(ite+1) ? *(ite+1) : *ite; min = min>temp ? temp : min; temp = temp!=*ite ? *ite : *(ite+1); max = max<temp ? temp : max; ite += 2; } minmax mx={min, max}; return mx; } int main() { double inData; vector<double>dvec; cout<<"input some numbers with end-of-file!"<<endl; while(cin>>inData) dvec.push_back(inData); minmax mx = fminmax(dvec.begin(), dvec.end()); cout<<"the minimum is:"<<setw(5)<<mx.min<<endl <<"the maximum is:"<<setw(5) <<mx.max<<endl; system("PAUSE"); return EXIT_SUCCESS; }