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

在数组中限制次数的取最大值和最小值问题

创建时间:2017-08-28 投稿人: 浏览次数:566

算法思想:如果在查找出最大值和最小值的元素时各遍历一遍所有元素,则至少要比较2n次,所以使用一遍遍历找出最大值和最小值的元素。 实现此思想的函数如下:
void maxmin(int A[],int n)
{
	int i;
	int max,min;
	max = A[1];
	min = A[1];
	for (i=2; i<=n; ++i)
	{
		if (A[i] > max)
		{
			max = A[i];
		}
		else if (A[i] < min)
		{
			min = A[i];
		}
	}
	cout << "max= " << max << ",min=" << min << endl;
}
在这个函数中,最坏的情况是A中的元素按递减次序排列,这时(A[i] > max)条件均不成立,比较的次数为n-1.另外,每次都要比较(A[i] < min),同样比较的次数为n-1。因此,总的比较次数为2(n-1)。最好的情况是A中的元素按递增次序排列,这时(A[i] > max)条件均成立,不会再执行else的比较,所以总的比较次数为n-1. 平均比较次数为[2(n-1)+n-1]/2 = 3n/2 - 3/2 <= 3n/2 由此可知,本算法的平均比较次数不多于3n/2.

阅读更多
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像