Day12 字符串排序

169 阅读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

思路一


把 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;
}