给定n个字符串,请对n个字符串按照字典的顺序排列。

338 阅读1分钟

算法打卡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)

小结

本题使用冒泡排序,时间复杂度较大