现在的位置: 首页 > 综合 > 正文

查找数组最大最小值

2013年10月02日 ⁄ 综合 ⁄ 共 458字 ⁄ 字号 评论关闭

设计一个最优算法来查找一个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;
}

抱歉!评论已关闭.