一维数组——交换最大和最小

【问题描述】

编写程序,从任意n个数中找出最大数和最小数,并将它们相互交换后输出。

【输入形式】

输入分2行:第一行为n的值(数据个数),第二行为n个数(各数间用空格分隔)。

【输出形式】

互换完最大数和最小数位置的n个数(各数间用一个空格分隔)。

【样例输入】

5

1 5 3 2 0

【样例输出】

1 0 3 2 5

【样例说明】

数列1、5、3、2、0中最大数是5,最小数是0,交换它们两个的位置,这个数列就变为:1、0、3、2、5

解析
一维数组热身题目。如果难以理解数组,那可以把它理解为矩阵。
本题的核心是比大小,数据规模不大且数据无序,直接采用打擂台。
关于打擂台,我在前面的文章有讲到过,这里不再赘述。想看的话就点击这些蓝色的文字:循环结构——找n个数当中的最小值

代码

#include<iostream>
using namespace std;
const int N=10002;
int a[N],n,minn=1e9,maxx=-1,pmin,pmax,t;
int main()
{
	cin>>n;
	pmin=pmax=1;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		if(a[i]>maxx)
		{
			maxx=a[i];
			pmax=i;
		}
		if(a[i]<minn)
		{
			minn=a[i];
			pmin=i;
		}
	}
	t=a[pmin];
	a[pmin]=a[pmax];
	a[pmax]=t;
	for(int i=1;i<=n;i++) cout<<a[i]<<" ";
}

我再补充一点,学到数组之后我喜欢定义常量。
我写C++程序的习惯是一般不用大写字母,如果用了大写字母,一般用作常量。
其基本格式为:
const <变量类型><变量名><=><常数或常数表达式>

const 是英文单词constant的缩写

const int N=10002

代表我向电脑申请一个整型常量(int),名字叫做N,它的值是10002。
由于是常量,故程序自始至终从来不会改变常量的值。所以,如果后面有N++之类的语句程序一定会报错,运行不了。
那么,为什么要定义常量呢?
其实就是为了简化代码的编写,同时方便调试。在正规一点的竞赛类题目,题目一般会告诉你数据规模。比如你这道题知道2<=n<=10000,那么你的数组就至少要有10000个单元。可是我不想打那么多个“0”,而且我也不知道要开几个数组,倘若题目要开10个数组呢?
所以,我就先把N定义为整型常量并赋值10002(多开一两个保险),然后
int a[N];
倘若要开更多的数组,我也不怕,直接b[N],c[N],…
但是如果不定义常量,每个N都要换成10002,真的有点累。
这就是这道题目的题解。手敲代码不易,麻烦各位看官留下一个赞或评论,点击关注可以看到更多内容。

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值