排序
Time Limit: 1000 ms Memory Limit: 32678 KiB
Problem Description
给你N(N<=100)个数,请你按照从小到大的顺序输出。
Input
输入数据第一行是一个正整数N,第二行有N个整数。
Output
输出一行,从小到大输出这N个数,中间用空格隔开。
Sample Input
51 4 3 2 5
Sample Output
1 2 3 4 5
Hint
Source
注意:不要畏难,塌下心来,仔细的看一看,最后会发现,真的很简单。
交换法:
#include<stdio.h>
#define N 100
int main(){
int n,temp;
int i,j;
int a[N];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
}
选择法:
#include<stdio.h>
#define N 100
int main(){
int n,temp;
int i,j;
int k=0;
int a[N];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++){
if(a[k]>a[j]){
k=j;
}
}
if(k!=i){
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
}