有一说一,假期还想日更是真的难~ 每天都有事要忙,而且就算没事干,也基本不想写东西,但也还是要逼着自己写啊,不然之前的努力就白费了!
今天翻了一下比较后面做过的题目,发现后面有一道应该比较简单的题目,我却用了两个函数来写,然后看了下时间,判断应该是自己最初拿来练排序函数的题,今天就分享一下吧
1935:军训排队
- 题目描述
一阵长哨划破长空,一群陌生的同学立即站好了队伍。一段铭记终生的记忆从这一刻开始。站在队伍中的我显得那么渺小,没有哪一点可能值得自豪,可我却始终在微笑。因为我深知一切将无法阻拦我去追寻梦的方向。在这片陌生的土地上,我的梦想将重新开始了新的起航。时常记起一位老师的话“一切皆有可能”,是的,在答案还是未知数之前,什么都是可能发生,我不需要操之过急。——佚名
杨八方要开始军训了,虽然听学长学姐说军训很开心,但八方同学的心里却还是有些忐忑。
那一天,杨八方终于见到了传说中的教官,正如想象中的那样帅。
静静地等待教官下达第一个命令……
“你看看站的队,不知道按照身高排列吗?”——这是教官的第一句话。
教官说的好有道理,按照身高来排列确实更有美感。
那么问题来了,现在有一组同学的身高,能否让他们从小到大排列好呢? - 输入
第一行为一个整数(
),代表同学们的身高。
下面一行有个以一个空格分隔开的整数
(
),保证没有重复数字。
PS:我们假设真的会有达到这种身高的同学。 - 输出
从小到大输出,中间以一个空格分开。
- 参考代码:
#include<bits/stdc++.h>
using namespace std;
void sort(int a[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
void add(int a[],int n)
{
int i;
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
}
int main()
{
int a[1001],n,i;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
sort(a,n);
add(a,n);
return 0;
}
- 代码解析:
这段代码我定义了两个函数,一个是sort函数,是一个自制的以从小到大为排序的排序函数,其实C语言库里本来就有sort这样的函数,我只是把其的功能重新写了一遍。 sort函数过程就是简单的比较大小与替换比较值,不理解循环里面那段比较的可以看一下我以前的题解。
- 这道题里由于比较大小的数量我们是不确定的,所以这里只能在数组中完成比较,相应的输出也只能用数组输出。
- sort比较的过程可以理解为,每次循环输入一个数组的数,然后与之前的上一个数组的数进行比较,然后如果比其小,便替换这个数,并让原来的数递进一位。如果觉得不好理解的也可以在纸上列出简单的几个数组进行上述比较。
- 题目的输入范围是1000个数,避免越界,我们直接定义一个大小为1001的数组。
网友评论