哪个是用于排序二维数组的最佳方法?

时间:2014-02-26 09:37:47

标签: c++ arrays sorting

对二维数组进行排序的最快方法是什么? 我正在用c ++语言创建一个应用程序,我有一个二维字符串数组来存储州名和城市名。我想对该数组进行排序并快速显示它。所以,它必须更快。

声明如下:

std::string state[STATE_SIZE]
std::string city[STATE_SIZE][CITY_SIZE]

结果应该是这样的

state[0] = "AAA";
state[1] = "BBB";

city[0][0] = "ABC";
city[0][1] = "PQR";
city[0][2] = "XYZ";
city[1][0] = "ADC";
city[1][1] = "GSF";
city[1][2] = "UHA";

城市数组应按州和城市排序。

我也读过这些帖子。但它只适用于单维数组。

Which is the best Method used for Sorting?

What sort algorithm provides the best worst-case performance?

2 个答案:

答案 0 :(得分:1)

最好的问题(特别是30000条以上的记录)将实现AVL树(自平衡二进制)。我建议你在维基百科或其他网站上阅读有关它们如何工作的内容(特别是AVL树)。为了让您知道如何实现我做了一个随机的谷歌搜索:C implementation of an AVL tree

答案 1 :(得分:1)

以下可能有所帮助:https://ideone.com/OjIlz4

int main(int argc, char *argv[])
{
    constexpr int STATE_SIZE = 2;
    constexpr int CITY_SIZE = 3;

    std::string data[STATE_SIZE][CITY_SIZE] =
    {
        {"ABC", "XYZ", "PQR"},
        {"UHA", "ADC", "GSF"}
    };
    std::string states[STATE_SIZE] = {"AAA", "BBB"};

    for (int i = 0; i != STATE_SIZE; ++i) {
        std::sort(data[i], data[i] + CITY_SIZE);
    }

    for (int i = 0; i != STATE_SIZE; ++i) {
        std::cout << states[i] << std::endl;
        for (int j = 0; j != CITY_SIZE; ++j) {
            std::cout << "    " << data[i][j] << std::endl;
        }
    }

    return 0;
}