算法打卡day12 2023.1.19
题目描述
给定n个字符串,请对n个字符串按照字典的顺序排列。
数据范围:1 <= n <=1000 ,字符串长度满足:1 <= len <= 100
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
示例1
输入:9
cap
to
cat
card
two
too
up
boat
boot
输出:
boat
boot
cap
card
cat
to
too
two
up
思路
可以利用冒泡排序的方法,将相邻的两个字符串对比,大的字符串(在字典中靠后的)向后冒泡,n轮循环后完成排序
具体实现
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<string> str;
string s;
string tmp;
for (int i = 0; i < n; i++) {
cin >> s;
str.push_back(s);
}
cout << "结果是"<<endl;
for (int i = 0; i < n - 1; i++) {
for (int j = 1; j < n - i; j++) {
if (str[j - 1] > str[j]) {
tmp = str[j];
str[j] = str[j - 1];
str[j - 1] = tmp;
}
}
}
for (int i = 0; i < n; i++)
cout << str[i] << endl;
return 0;
}
时间复杂度
O(n^2)
小结
本题使用冒泡排序,时间复杂度较大