算法导论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;}