/*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;
}
算法导论CLRS 9.1 最大值和最小值
最新推荐文章于 2022-02-13 12:50:58 发布