题目意思是,输入n,表示n个数,然后输入这n个数,最后输出这从小到大的n个数。
这道排序题因为数量规模在1~100之间,所以几乎用所有的排序算法都不会超时,我这里用的是这样的方法,类似冒泡排序。
首先第一轮循环,将每一个数字与后面的数字进行比较,如果它的值比后面的值要大,则进行交换。否则顺序保持不变。这样在O(n^2)的数量级上就可求解出来。
这样一道简单的排序题,我还是wrong了两次,主体算法没有问题,问题出在没看清题目。题目要求可以输入多组数据,所以排完一组数之后要紧接着接受用户的第二次输入while(cin>>n)来实现。
#include <iostream>
using namespace std;
int main(){
int n;
int a[100];
while(cin>>n){
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
int temp;
if(a[i]>a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}