社区
数据结构与算法
帖子详情
二维数组排序问题
HarryPatton
2008-01-06 06:15:11
现有一个二维数据a[10,10],10行10列。 首先把每行的元素从小到大排序一下,接着把每列的元素从小到大排序一下。请问每行的元素还是从小到大排序的吗?如果是或者不是,请证明!
例子(这里由于版面原因,只列出3*3的数组)
4 2 5 2 4 5 2 4 5
9 8 10 ->排序行 8 9 10 ->排序列 3 4 5 -> 可以发现每行还是按照从小到大排序的。
3 4 5 3 4 5 8 9 10
...全文
92
6
打赏
收藏
二维数组排序问题
现有一个二维数据a[10,10],10行10列。 首先把每行的元素从小到大排序一下,接着把每列的元素从小到大排序一下。请问每行的元素还是从小到大排序的吗?如果是或者不是,请证明! 例子(这里由于版面原因,只列出3*3的数组) 4 2 5 2 4 5 2 4 5 9 8 10 ->排序行 8 9 10 ->排序列 3 4 5 -> 可以发现每行还是按照从小到大排序的。 3 4 5 3 4 5 8 9 10
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lyg_wangyushi
2008-01-07
打赏
举报
回复
每次操作都使得结果成立,那么最后的结果必然成立阿
grellen
2008-01-06
打赏
举报
回复
每行的元素还是从小到大排序的
lyg_wangyushi
2008-01-06
打赏
举报
回复
假设数组看成二维矩阵,则:
a11,a12,a13,……a1n;
a21,a22,a23,……a2n;
…………………………
…………………………
an1,an2,an3,……ann;
则先按行排列后每行都为有序的,再按列排列,则每列的最小元素上升到第一行,
比方说我没考虑行已经排好的一,二列,显然第一列的最小元素<=a'11,(a'11
为排列好的矩阵的第一个元素,且a'11<=a'12;
再将第二列元素排列,由于第二列的数在最初都要比相应的第一列的数要大,所以
第而列的最小元素肯定要>=第一列的最小元素,比方说第一列的最小元素是ar1(
对应原来的矩阵),第二列最小的数十ak2,则如果k=r,则ar2>=ar1,得证,
如果k!=r,则ak2>=ak1>=ar1,也得证,……这样也就可以证明命题的正确性.
a0002
2008-01-06
打赏
举报
回复
当然是
HarryPatton
2008-01-06
打赏
举报
回复
-dlym, 你的反证法是正确的,也很明白,谢谢。
-lyg_wangyushi,不好意思,没看懂你的意思。
这个题目能给出正面的证明吗?
大王派我去巡山
2008-01-06
打赏
举报
回复
变换之后的矩阵每行中的元素还是从小到大排列的。证明如下:
用反证法,假设存在一处a[i, j] > a[i, j+1]。
因为列中元素是经过排序的,所以必定有:
a[1, j+1] <= a[2, j+1] <= …… <= a[i, j+1] < a[i, j]
也就是说,第j+1列中存在着 i 个比a[i, j]还要小的元素。
这就是说,在
行排序之后
列排序之前
,在原来的第 j 列中一定还有至少 i 个比a[i, j]还要小的数字(其实就是与a[1, j+1] ,a[2, j+1] , …… a[i, j+1]同行的这 i 个 ,它们比a[1, j+1] ,a[2, j+1] , …… a[i, j+1]还要小,当然更比a[i, j]小)。
这说明,如果对第 j 列排序的话,a[i, j]这个元素排不到第 i 行(因为同列中至少有i个元素是比它还要小的),这与[i, j]的下标明显是矛盾的。
从而假设不成立。
不知道说清楚了没,反正我看着是挺明白的:)
220个经典C语言源码
014 求解
二维数组
的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素
排序
018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...
青少年C++编程NOIP/CSP竞赛通关语法-
二维数组
1、本课程为零基础C++语法专题课,是青少儿参加信息学奥赛NOIP/CSP需要学习的语法专题课; 2、本课程每节课均配有练习题以及真题,以锻炼孩子的解题能力;... 6、本课程介绍的是
二维数组
。也是历来竞赛重要考点。
C++
二维数组
sort
排序
问题
以往遇到行排列
问题
(按每行的字典序
排序
)的时候,总是使用结构体来进行
排序
,但是如何使用
二维数组
来达到同样的效果呢?实验内容:利用
二维数组
进行“三级
排序
”测试1:使用c++内置的普通型
二维数组
#include &...
C++
二维数组
排序
方法
在这里注意一点的是:定义一个
二维数组
名为a,a是二级指针(地址的地址),*a表示
二维数组
a第一行a[0]的首地址,而要实现
二维数组
的
排序
为了避免出错我们取第一个元素的地址为:&a[0][0]。 C++
二维数组
冒泡
排序
...
数据结构与算法
33,006
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章