【题目描述】
对给定的n(1≤n≤20)个国家名(国家名字长度不超过20),按其字母的顺序输出。
【输入】
第一行为国家的个数n;
以下n行为国家的名字。
【输出】
n行,排序后的国名。
【输入样例】
3
Korea
China
Japan
【输出样例】
China
Japan
Korea
#include<iostream>
using namespace std;
#include<string>
#include<cmath>
int main()
{
int n = 0;
cin >> n;
//定义一个字符串数组,存储n个国家名
string* s = new string[n];
for (int i = 0; i < n; i++)
{
cin >> s[i];
}
//冒泡排序,将这n个国家进行排序。
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
//直接比较大小即可,会按字典序进行比较。
if (s[j] > s[j + 1])
{
string temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
}
//打印排序好后的结果
for (int i = 0; i < n; i++)
{
cout << s[i] << endl;
}
}下意识只想到了按首字母排序,但是当首字母相同时,就应该按第二个字母排序,以此类推,所以直接使用首字母进行比较是不行的,然后字符串可以直接在if判断里面进行比较,就会按照字典序进行排序了。也就是逐位进行比较。