首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >二维数组的线性排序

二维数组的线性排序
EN

Stack Overflow用户
提问于 2011-03-04 03:09:24
回答 6查看 2K关注 0票数 2

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

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

代码语言:javascript
运行
复制
4  6  1
3  2  9
5  7  8

那么结果应该是

代码语言:javascript
运行
复制
1  2  3
4  5  6
7  8  9
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-03-04 03:14:57

由于您希望2D数组按行排序,这恰好是多维数组在C中存储的顺序,因此您可以假设它是一个一维数组,并以这种方式对其排序。

假设您有一个函数void sort(int[], int size);,它接受指向一维数组的第一个元素及其大小的指针,您可以这样做

代码语言:javascript
运行
复制
int a[3][3] = {{4,6,1}, {3,2,9}, {5,7,8}};
sort(&a[0][0], 9);

当然,这只适用于真正的二维数组,而不适用于指针数组,这就是动态分配的二维数组通常是如何用C语言实现的。

票数 1
EN

Stack Overflow用户

发布于 2011-03-04 03:17:07

如果您将内存分配为常规的多维声明,则可以使用几乎相同的函数……因为多维数组是逐行存储在内存中的,而每一行只是一个规则数组。

只需将矩阵第一个元素的地址(通常为name_of_the_matrix[0])和矩阵中元素的数量传递给函数即可。

希望我能帮上忙。

票数 0
EN

Stack Overflow用户

发布于 2011-03-04 03:17:20

您可以使用Bubble-Sort:Wikipedia并使用for循环遍历数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5185302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档