首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

求最大值最小值的步骤 时间复杂度O(n)

2013-09-06 
求最大值最小值的方法 时间复杂度O(n)#includeiostream#include iostream#include bitset#include

求最大值最小值的方法 时间复杂度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;}

热点排行