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

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

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

【输出形式】
最小的数

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

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

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

#include<iostream>
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<iostream>
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<iostream>
#include<algorithm> 
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];
}
  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值