我是一个C编程新手,正在尝试编写一些排序程序。我编写了线性/正态排序的程序。
现在我想编写一个程序来对二维数组进行排序。即,如果矩阵是
4 6 1
3 2 9
5 7 8那么结果应该是
1 2 3
4 5 6
7 8 9发布于 2011-03-04 03:14:57
由于您希望2D数组按行排序,这恰好是多维数组在C中存储的顺序,因此您可以假设它是一个一维数组,并以这种方式对其排序。
假设您有一个函数void sort(int[], int size);,它接受指向一维数组的第一个元素及其大小的指针,您可以这样做
int a[3][3] = {{4,6,1}, {3,2,9}, {5,7,8}};
sort(&a[0][0], 9);当然,这只适用于真正的二维数组,而不适用于指针数组,这就是动态分配的二维数组通常是如何用C语言实现的。
发布于 2011-03-04 03:17:07
如果您将内存分配为常规的多维声明,则可以使用几乎相同的函数……因为多维数组是逐行存储在内存中的,而每一行只是一个规则数组。
只需将矩阵第一个元素的地址(通常为name_of_the_matrix[0])和矩阵中元素的数量传递给函数即可。
希望我能帮上忙。
发布于 2011-03-04 03:17:20
您可以使用Bubble-Sort:Wikipedia并使用for循环遍历数组。
https://stackoverflow.com/questions/5185302
复制相似问题