📌  相关文章
📜  如何在 C++ 中对字符串进行排序(1)

📅  最后修改于: 2023-12-03 15:08:34.959000             🧑  作者: Mango

如何在 C++ 中对字符串进行排序

对字符串进行排序是处理字符串的常见操作之一。在 C++ 中,我们可以使用多种方法对字符串进行排序,本文将介绍几种实现方法。

方法一:使用 sort 函数

C++ 中有一个标准库函数 sort,可以用于快速对 vector 容器中的元素进行排序,string 类型也是可以排序的,因为 string 也被实现为一个容器。sort 函数的基本用法如下:

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int main() {
    string s = "ratdogcat";

    sort(s.begin(), s.end());

    cout << s << endl;

    return 0;
}

结果输出为:acdgorrt。

该方法的时间复杂度为 O(n log n),效率比较高。

方法二:使用自定义比较函数

如果想要按照一定的规则排序,比如按字符串长度排序,我们就需要使用自定义比较函数。自定义比较函数需要满足严格弱序关系,即满足反身性、对称性和传递性,并且返回为 bool 类型。

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

bool cmp(string a, string b) {
    return a.size() < b.size();
}

int main() {
    string s[5] = {"rat", "dog", "cat", "parrot", "fish"};
    sort(s, s + 5, cmp);

    for (int i = 0; i < 5; i++) {
        cout << s[i] << endl;
    }

    return 0;
}

结果输出为:

cat
rat
dog
fish
parrot

该方法的时间复杂度为 O(n log n)。

方法三:使用 lambda 表达式

在 C++11 引入的 lambda 表达式可以让我们更加方便地编写自定义的比较函数。使用 lambda 表达式可以将自定义比较函数写入 sort 函数中,不用再定义额外的函数。

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main() {
    string s[5] = {"rat", "dog", "cat", "parrot", "fish"};

    sort(s, s + 5, [](string a, string b){return a.size() < b.size();});

    for (int i = 0; i < 5; i++) {
        cout << s[i] << endl;
    }

    return 0;
}

结果输出为:

cat
rat
dog
fish
parrot

该方法的时间复杂度为 O(n log n)。

总结

本文介绍了 C++ 中排序字符串的三种方法:使用 sort 函数、使用自定义比较函数以及使用 lambda 表达式。根据不同的需求选用不同的方法,能够大大提高程序的效率。