求最大值最小值的方法 时间复杂度O(n)

时间:2023-03-09 16:15:11
求最大值最小值的方法 时间复杂度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;
}