求最大值最小值的方法 时间复杂度O(n)
#include<iostream> #include <iostream>#include <bitset>#include <ctime>using namespace std;template <size_t UpperBound> class Urand{ //生成随机数 bitset<UpperBound> used;public:Urand(){ srand(time(0)); }double operator() ();};template<size_t UpperBound>inline double Urand<UpperBound>::operator()(){if(used.count() == UpperBound)used.reset();size_t newval;while(used[newval = rand() % UpperBound]);used[newval] = true;return newval*0.1;}int main(int argc, char* argv[]){Urand<10> u;double darr[10];double first = 0.0;double second = 0.0;double min = 0.0;double max = 0.0;for ( int i = 0; i < 10; ++i){darr[i] = u();} int num = sizeof(darr)/sizeof(darr[0]);bool flag = false;if( num%2==0 ) { flag = true; }else{ flag = false;} if(flag){ int i= 0; first = darr[0]; second = darr[1]; if(first<second) { min = first; max = second; } else { min = second; max = first; }}else{min = darr[0];max = darr[0];} for( flag? i=2 : i=1; i<num; i+=2 ) { if( darr[i]<darr[i+1] ){ if( min>darr[i] ) { min = darr[i];}if( max<darr[i+1] ){ max = darr[i+1];}}else{ if( min>darr[i+1] ){ min = darr[i+1];}if( max<darr[i]){max = darr[i];}} } cout<<"Max :"<<max<<endl;cout<<"Min :"<<min<<endl;return 0;}