排序
Time Limit: 1000 ms Memory Limit: 32678 KiB
Problem Description
给你N(N<=100)个数,请你按照从小到大的顺序输出。
Input
输入数据第一行是一个正整数N,第二行有N个整数。
Output
输出一行,从小到大输出这N个数,中间用空格隔开。
Sample Input
5
1 4 3 2 5
Sample Output
1 2 3 4 5
#include<stdio.h>
int main()
{
int n,i,a[100],m,b,temp;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);//读入数据
for(b=0;b<n-1;b++)//外层循环从0到n-2,进行比较,每次在这里将最大的值放在右边,相对小的值放在左面。
{
for(i=0;i<n-1-b;i++)
{
if(a[i]>a[i+1])//此处注意,与第十行代码相联系,i+1,意味着在i最大达到n-2!!!!,因为只有这样i+1才能取得a[n-1]!!!
{
temp=a[i];
a[i]=a[i+1];//比较,交换数据将每一次比较的最大值放在右面,最后放在n-1位置上的就是整条数列的最大值。
a[i+1]=temp;
}
}
}
for(m=0;m<n;m++)//循环输出
printf("%d ",a[m]);
return 0;
}
总结:最近这几天刚接触数组,用的套粗糙,不灵活,因此以后对于边界问题要严谨,不能似是而非,写在下面的限制条件要兼顾上层的限制条件。