码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-05-04 20:12:28      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

#include <iostream>
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<n-1;j+=2)
	{
		if(a[j]>a[j+1])
			{
				if(a[j]>a[1])
					swap(a[j],a[1]);
				if(a[j+1]<a[0])
					swap(a[j+1],a[0]);
			}
		else
			{	
				if(a[j]<a[0])
					swap(a[j],a[0]);
				if(a[j+1]>a[1])
					swap(a[j+1],a[1]);
			}
		if(n%2!=0 && j==n-3)
			{
				if(a[n-1]<a[0])
					swap(a[n-1],a[0]);
				if(a[n-1]>a[1])
					swap(a[n-1],a[1]);
			  break;
			}
	}
	cout<<a[0]<<endl;
	cout<<a[1]<<endl;
}
int main()
{
	int a[]={5,4,3,2,8,0,8,9,76,6,1000};
	Grial(a,11);
	return 0;
}

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

标签:

原文地址:http://blog.csdn.net/liuhuiyan_2014/article/details/45485067

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!