求最大值最小值的方法 时间复杂度O(n)
2013-08-31 23:07
337 查看
#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; }
相关文章推荐
- 求最大值最小值的方法 时间复杂度O(n)
- 时间复杂度为O(1),求栈最大最小值和pop,push操作
- 求数列的最大子段和的两种方法(包括时间复杂度为线性时间的算法)
- 查找数组最大值最小值:时间复杂度最多为:o(3n/2)
- 求最大子序列和的四种经典方法及其算法时间复杂度分析
- 时间复杂度为n的求最大子数组的方法
- C++数组求最大值及最小值最快方法(3[n/2]的时间效率)
- 求最大连续序列和的一个巧妙方法,时间复杂度O(n)
- 最大字段和 时间复杂度线性阶 java
- .Net Framework 与 SQL Server 2005 混乱的时间最大最小值
- 实现一个栈,要求实现出栈,入栈,返回最小值的操作,时间复杂度为O(1)
- c#方法 最大值我最小值
- 扩展堆栈(stack) O(1) 时间访问栈中最小值(或最大值)
- 算法——时间复杂度分析方法
- 无序序列中O(n)时间复杂度寻找最小(最大)的K个数
- 求数组中连续最大和值,时间复杂度为O(n)
- 扩展堆栈(stack) O(1) 时间访问栈中最小值(或最大值)
- 用sort()方法对数组的元素进行排序(可按字母升序降序与获得最大最小值)
- 求复杂的时间复杂读方法(假设法)
- 最大子序列和问题的求解(时间复杂度为O(N))