题目描述
对N个长度最长可达到1000的数进行排序。
输入
输入第一行为一个整数N,(1<=N<=100)。
接下来的N行每行有一个数,数的长度范围为1<=len<=1000。
每个数都是一个正数,并且保证不包含前缀零。
输出
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。
样例输入 Copy
4 123 1234 12345 2345
样例输出 Copy
123 1234 2345 12345
#include <iostream>
#include <string.h>
#include <vector>
#include <algorithm>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int cmp(string s1, string s2){
int len1 = s1.length();
int len2 = s2.length();
if(len1 != len2) return len1 < len2;
else{
for(int i = 0; i < len1; i++){
if(s1[i] != s2[i]) return s1[i] < s2[i];
}
}
}
int main(int argc, char** argv) {
int n;
while(cin >> n){
vector<string> vec;
for(int i = 0; i < n; i++){
string s;
cin >> s;
vec.push_back(s);
}
sort(vec.begin(), vec.end(), cmp);
for(int i = 0; i < n; i++){
cout << vec[i] << endl;
}
}
return 0;
}