2048:【例5.18】串排序
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 8883 通过数: 4206
【题目描述】
对给定的n(1≤n≤20)个国家名(国家名字长度不超过20),按其字母的顺序输出。
【输入】
第一行为国家的个数n;
以下n行为国家的名字。
【输出】
n行,排序后的国名。
分析:直接比较即可,当然强制转成首字符ascii码进行比较也行
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
#include<string>
using std::string;
#include<algorithm>
using std::swap;
int main()
{
int n = 0;
string a[20];
cin >> n;
for (int i = 0; i < n; ++i)
{
cin >> a[i];
}
for (int i = 0; i < n - 1; ++i)
{
for (int j = 0; j < n - i - 1; ++j)
{
if (a[j] > a[j + 1])
{
//直接比较大小就是比较首字母的ascii码
swap(a[j], a[j + 1]);
}
}
}
for (int i = 0; i < n; ++i)
{
cout << a[i]<<endl;
}
}