算法练习Day12

71 阅读1分钟

题目描述

给定 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)

小结

时间复杂度有点高,可优化