对二维数组进行排序的最快方法是什么? 我正在用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?
答案 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;
}