题目:
样例:
写法一(冒泡排序):
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int main(){
int n;
while(scanf("%d",&n)!=EOF){
string num[110];
for(int i=0;i<n;i++){
cin>>num[i];
}
string t;
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j++){
int len1=num[j].length();
int len2=num[j+1].length();
if(len1>len2){
t=num[j];
num[j]=num[j+1];
num[j+1]=t;
}
else if(len1==len2){
for(int p=0;p<len1;p++){
if(num[j][p]>num[j+1][p]){
t=num[j];
num[j]=num[j+1];
num[j+1]=t;
break;
}
else if(num[j][p]<num[j+1][p]){//千万不要忘记加这个
break;//如果小于也要立刻退出,并且由于顺序式正确的,不需要交换,直接比较下一个
}
}
}
}
}
for(int i=0;i<n;i++){
printf("%s\n",num[i].c_str());
}
}
return 0;
}
写法二:直接用sort
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int n;
string a[105];
int cmp(string aa,string bb)
{
if(aa.size()==bb.size())
{
return aa<bb;
}
else
{
return aa.size()<bb.size();
}
}
int main()
{
while(scanf("%d",&n)==1)
{
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
{
cout<<a[i]<<endl;
}
}
return 0;
}