【发布时间】:2013-12-16 05:16:44
【问题描述】:
我想像这样对一个二维数组进行排序:
4 2 5
1 3 7
6 9 8
这样获得:
1 2 3
4 5 6
7 8 9
使用 C 语言。
解决此问题的几个选项可能包括:
- 将输入的二维数组转换为一维数组,并使用标准库函数,例如 sort。
-
正如有人建议here,我可以有一个定义或函数来使用一维索引访问每个值,并使用插入排序或冒泡排序。
ARRAY(index) 数组[(index) / 3][(index) % 3]
我不喜欢任何一个选项,因为第一个需要临时空间,而第二个可能会很慢。我的二维数组的行和列都会很大。我也很懒,想知道我是否可以使用 qsort 的标准 C 库函数。似乎我不能将 qsort 与二维数组一起使用来获得所有元素的结果,就像一维数组一样。
我得到了一个二维数组,因此将其转换为一维数组对我来说不是一个选择。
感谢您的任何建议。
【问题讨论】:
-
你如何声明你的二维数组?如果像
int a[2][3]这样的东西,你可以把它当作一维数组。 -
只是为了记录那些可能看不到下面讨论的人,我要使用的数组是动态分配的“int **a”。
标签: c sorting multidimensional-array quicksort bubble-sort