【发布时间】:2012-12-24 14:37:08
【问题描述】:
我有一个二维数组,我想用 C++ 中给定的 qsort() 函数对其进行快速排序:
unsigned work[N][3];
我想按第三个索引对“工作”数组进行排序...所以如果work[i] 在work[j] 之前,如果work[i][2]>work[j][2]。
我知道我需要使用一个函数来比较它,但我不知道该怎么做。
编辑: 如果我会执行以下操作,会有所帮助吗:
unsigned work[3][N];
qsort(work[2], N, sizeof(unsigned), compare);
比较如下:
int compare(const void* a, const void* b)
{
return(*(unsigned*)a-*(unsigned*)b);
}
?
【问题讨论】:
-
请澄清:这是 C 还是 C++?如果您使用 C++,解决方案很简单:不要使用 C 数组,而是使用 C++ 数据容器,并且使用
std::sort()而不是qsort()。std::sort()也更快... -
我真的是一个编程新手,我正在尝试使用 C++,所以如果你能给我一些提到的 C++ 数据容器的例子,我会照顾它们。
-
“如果我执行以下操作,会有帮助吗?” - 不,不会。你读过答案吗?
-
“我正在尝试使用 C++” - 那么为什么你的问题又被转为 C?现在一劳永逸,你要使用C还是C++(请不要说C/C++,那比当前的混乱疯狂)。
-
@DevSolar 您是否只是通过将问题重新标记为完全不同的语言来完全改变问题(与 OP 的 cmets 相反)?
标签: c++ multidimensional-array quicksort qsort