如何按字母顺序排序c ++字符串数组

时间:2018-04-15 04:05:30

标签: c++ sorting

我有一个结构数组,在这个结构中我有一个包含玩家名字的字符串变量。我想只用它们的FIRST字符对这些名字进行排序。 我曾尝试使用><运算符,但我无法正常使用它。我也无法访问任何C++11内容。

void sort(player * player_array, num_players){
    string sorted[num_players];
    for(int i = 0; i < num_players; i++){
        if(player_array[i].name > player_array[i+1].name){
            sorted += player_array[i+1].name;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

在我看来,你的算法是错误的。尝试制作一些示例并手动运行它们。 请尝试使用此代码:

#include <algorithm>

bool comp(string a, string b)
{
    return a[0] < b[0];
}

void sort(player *player_array, num_players)
{
    string sorted[num_players];
    for (int i = 0; i < num_players; ++i)
        sorted[i] = player_array[i].name;
    std::sort(sorted, sorted + num_players, comp);
}

此解决方案使用std :: sort,因此复杂度为O(n log n)。但由于您只按第一个字符对名称进行排序,因此可以使用计数排序将其优化为O(n)。