题目描述
给定 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
思路
采用冒泡排序进行比较
具体实现
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<queue>
using namespace std;
int main(){
int n;
cin >> n;
vector<string> strs; //字符串数组
string s;
for(int i = 0; i < n; i++){ //输入n个字符串
cin >> s;
strs.push_back(s); //堆排序
}
for(int i = 0; i < n; i++)
for(int j = 1; j < n; j++)
if(strs[j] < strs[j - 1]){//比较并冒泡
string temp = strs[j]; //交换
strs[j] = strs[j - 1];
strs[j - 1] = temp;
}
for(int i = 0; i < n; i++) //输出
cout << strs[i] << endl;
return 0;
}
时间复杂度
时间复杂度为O(n^2)
小结
时间复杂度有点高,可优化