c - 二维数组的线性排序

标签 c sorting

我是 C 编程的新手,正在尝试编写一些排序程序。我做了线性/正常排序的程序。

现在我想编写一个程序来对二维数组进行排序。 即如果矩阵是

4  6  1
3  2  9
5  7  8

那么结果应该是

1  2  3
4  5  6
7  8  9

最佳答案

由于您希望二维数组按行排序,这恰好是多维数组在 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 中实现的方式。

关于c - 二维数组的线性排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5185302/

相关文章:

c++ - 以与另一个列表相同的方式重新排列列表

python - 对列表中的元素子列表进行排序,将其余元素留在原地

java - 冒泡排序编译但越界

c - 对 2D 字符数组执行选择排序

c - 使用归并排序按字母顺序对结构数组进行排序

c - 对于其他空指针来说效果很好,但核心转储在一个 - C

ios 使用字典对数组进行排序

linux - 在 Linux 中按注释对文件进行排序

c - 线程安全随机数

c++ - 使 strncmp() 接受 unsigned char * 作为参数