题目描述
给定n个字符串,请对n个字符串按照字典的顺序排列。
数据范围:1 <= n <=1000 ,字符串长度满足:1 <= len <= 100
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
示例
输入:9
cap
to
cat
card
two
too
up
boat
boot
输出:boat
boot
cap
card
cat
to
too
two
up
思路一
把 n 个字符串存储在一个大小为 n 的数组中,题目的按字典顺序排列,即将数组元素按升序排列(由小到大),实现升序排列可以使用经典的冒泡排序算法
算法实现
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
//冒泡排序
int main() {
int n; //字符串个数
cin >> n;
vector<string> strs; //字符串数组
string s; //单个
string tmp; //中间变量
for (int i = 0; i < n; i++) { //输入n个字符串
cin >> s;
strs.push_back(s);
}
cout << endl << "输出:" << endl;
// 使用冒泡排序的方式实现升序序列
for (int i = 0; i < n - 1; i++) {
for (int j = 1; j < n - i; j++) {
if (strs[j - 1] > strs[j]) { //冒泡
tmp = strs[j]; //交换
strs[j] = strs[j - 1];
strs[j - 1] = tmp;
}
}
}
for (int k = 0; k < n; k++) cout << strs[k] << endl; //输出排序后的字符串
return 0;
}