入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

查找数组最大最小值

创建时间:2013-09-29 投稿人: 浏览次数:2335

设计一个最优算法来查找一个n个元素数组中的最大值和最小值。一直一种需要比较2n次的方法,请给出一个更优的算法。请特别注意优化时间复杂度的常数。


void fun(int a[], int n)
{
    if (a == NULL)
	{
		return;
	}

	int max = a[0];
	int min = a[0];
	int len = (n&1)? n : n-1;
	int tempMax, tempMin;
	for(int i = 1; i < len; i += 2)
	{
	    if (a[i] > a[i+1])
		{
			tempMax = a[i];
			tempMin = a[i+1];
		}
		else
		{
			tempMax = a[i+1];
			tempMin = a[i];
		}

		if (tempMax > max)
		{
			max = tempMax;
		}
		if (tempMin < min)
		{
			min = tempMin;
		}
	}

	if (n != len)
	{
		if (a[n-1] > max)
		{
			max = a[n-1];
		}
		if (a[n-1] < min)
		{
			min = a[n-1];
		}
	}
	cout << "Min num is " << min << endl;
	cout << "Max num is " << max << endl;
}


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。