循环结构——n个数中找最小值

循环结构——n个数中找最小值,第1张

【问题描述】
编写程序,从n个整数中找到最小的数并输出。输入分2行:第一行为n的值,第二行为n个整数。

【输入形式】
输入分2行:第一行为n的值,第二行为n个整数

【输出形式】
最小的数

【样例输入】
5
1 5 2 3 0

【样例输出】
0
【样例说明】
先输入个数5,接下来输入5个数,这5个数分别是1、5、3、2、0,其中最小值是0

常规思路:
打擂台思想。所谓“成王败寇”。不断输入数,如果新输入的数比前面一个要小,那就新数当擂主,周而复始。
那么谁第一个当擂主呢?因为要求最小值,我们不妨先将擂主定义为一个很大的数。

#include
using namespace std;
int main()
{
	int n,ans=2147483647,a;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a;
		ans=min(ans,a);
	}
	cout<<ans<<endl;
}

根据所学知识,就这么写了。
但是,有人不讲武德,那我也没什么好说的了。
这道题还可以用排序——把所有的数从小到大排序,然后输出第一个数——因为第一个数就是最小的那个数。
算法复杂度最小的就是快速排序了。其原理可依照此程序进行参考研究。

#include
using namespace std;
const int N=1001;
int n,a[N];
void qsort(int,int);
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	qsort(1,n);
	cout<<a[1];
}
void qsort(int l,int r)
{
	int i=l,j=r,m=a[(l+r)/2],t;
	do
	{
		while(a[i]<m) i++;
		while(a[j]>m) j--;
		if(i<=j)
		{
			t=a[i];
			a[i]=a[j];
			a[j]=t;
			i++;
			j--;
		}
	}while(i<=j);
	if(l<j) qsort(l,j);
	if(r>i) qsort(i,r); 
}

当然,对原理掌握比较好的可以利用C++本身自带的快速排序的算法库,要调用algorithm

#include
#include 
using namespace std;
const int N=1001;
int n,a[N];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+n+1);
	cout<<a[1];
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/3002224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-27
下一篇 2022-09-27

发表评论

登录后才能评论

评论列表(0条)

保存