C++数组求最大值及最小值最快方法(3[n/2]的时间效率)

2015-11-21 01:03:24 · 作者: · 浏览: 6
#include 
  
   
using namespace std;
//最小值和最大值的求解,时间复杂度最多是3[n/2],依据算法导论第九章.
void swap(int &a,int &b)
{
	int temp = a;
	a = b;
	b = temp;
}
void Grial(int a[],int n)
{
	int i = 0;
	if(a[i]>a[i+1])
	{
		swap(a[i],a[i+1]);
	}
	for(int j = i+2;j
   
a[j+1]) { if(a[j]>a[1]) swap(a[j],a[1]); if(a[j+1] a[1]) swap(a[j+1],a[1]); } if(n%2!=0 && j==n-3) { if(a[n-1] a[1]) swap(a[n-1],a[1]); break; } } cout<