【问题标题】:how to sort array of c++ strings alphabetically [closed]如何按字母顺序对C++字符串数组进行排序[关闭]
【发布时间】:2018-04-15 04:05:30
【问题描述】:

我有一个结构数组,在这个结构中我有一个保存玩家姓名的字符串变量。我只想按它们的第一个字符对这些名称进行排序。 我尝试使用 >< 运算符,但无法正常工作。我也无权访问任何 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;
        }
    }
}

【问题讨论】:

标签: c++ sorting


【解决方案1】:

在我看来,您的算法是错误的。尝试制作一些示例并手动运行它们。 试试这个代码:

#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)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2018-04-21
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    相关资源
    最近更新 更多