二维坐标数组的排序 帮忙!

ylongwu 2010-07-05 12:09:44


如图,将图中的所有点归入各行各列。


图中的点为一个个的坐标(x,y),共有10*9个坐标点,现在需要将他们排序分配到一个10*9的数组中,

请问有没有一个算法能保证100%的分配正确?


我试过用不断地循环 x排序 再y排序,最终没能得到正确的结果。

...全文
446 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
azure110 2010-07-06
  • 打赏
  • 举报
回复
你可以左右两个值减去中间一个值得到绝对值小的为一组;然后再排序打印;
依次推下去
ylongwu 2010-07-05
  • 打赏
  • 举报
回复
图中的点明显是一个10*9的二维数组,

原则就是将这90个点分配到10*9的数组中,比如这些点应该放在最后一列(原图中靠右的点):



ylongwu 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 stephen_yin 的回复:]
点既然能画出来,那坐标必然是有的,就存到二维数组中,中间会有什么问题啊!
[/Quote]

问题就在如何存放到10*9的二维数组中,排序容易混乱,比如第二列的点可能被放到第一列去了
Dstnoe 2010-07-05
  • 打赏
  • 举报
回复
楼主能说一下 排序的原则吗?
屎带芬 2010-07-05
  • 打赏
  • 举报
回复
点既然能画出来,那坐标必然是有的,就存到二维数组中,中间会有什么问题啊!
屎带芬 2010-07-05
  • 打赏
  • 举报
回复
这个,难点在什么地方?没看出来啊……
赵文波 2010-07-05
  • 打赏
  • 举报
回复
难啊= = 等高手来回答吧
cphj 2010-07-05
  • 打赏
  • 举报
回复
你这个是模式识别的问题,根本不是“排序”问题
ylongwu 2010-07-05
  • 打赏
  • 举报
回复
非常感谢楼上的,终于有人看明白我的问题了!!!

点的排列是很变态的,有一定的弯曲,从第一张图上也能看出。

比如:倒数第二列的点的x值可能比最后一列的x值还小
看图:
赵文波 2010-07-05
  • 打赏
  • 举报
回复
首先,你可以找到所有的点的坐标。而且不是已经给出了每个点的坐标了吗。

然后开始排序

首先,找出X值最小的9个点。因为是9列。这9个点按Y值排序由大到小排序,从大到小,分别是[0,0] [1,0] [2,0],[3,0];
这样就找出了第一列。

然后在剩余的点里,继续如此找。
我觉得这是最简单的方法。只要点的排列不是太变态,就可以搞的定
ylongwu 2010-07-05
  • 打赏
  • 举报
回复
这是原始数据,是一个一维数组,大小为90,每个元素是一个坐标。
ylongwu 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 flymood 的回复:]
你画的时候总有规律吧。在画的过程中向二维数组填数。能画出这种形状,说明一维数组已经按一定的规律排好序了。如果直接给90个数,这90个数是无序的,你也画不出来上面的图形啊。而且将90个无序的数填到2维数组,还这是不好办啊。
[/Quote]

一维数组完全是乱的,数组的每个元素就是一个坐标(x,y),将90个坐标依次取出,并在每个坐标处用不同颜色标出来,就形成了第一幅图。
ylongwu 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 visualeleven 的回复:]
你排序的规则是什么?
[/Quote]

规则只能这么说:第一幅图中的点明显是一个10*9的矩阵,但是这只是看出来的,现在想要用算法将他们真实的保存到10*9的矩阵中。

如果规则能完全写出来 那算法也就出来了吧?所以这个规则应该算是没找到 只是能看出来这90个点可以形成一个10*9的矩阵 现在的问题就是如何用算法将他们分成10*9的矩阵
flymood 2010-07-05
  • 打赏
  • 举报
回复
你画的时候总有规律吧。在画的过程中向二维数组填数。能画出这种形状,说明一维数组已经按一定的规律排好序了。如果直接给90个数,这90个数是无序的,你也画不出来上面的图形啊。而且将90个无序的数填到2维数组,还这是不好办啊。
Eleven 2010-07-05
  • 打赏
  • 举报
回复
你排序的规则是什么?
ylongwu 2010-07-05
  • 打赏
  • 举报
回复
原始数据是一个长度为90的一维坐标数组,

我将90个坐标用不同颜色描绘在上图中,

这样可以看出这90个坐标是按10*9的矩阵排列的

现在想用一个算法将90个坐标保存在10*9的数组中

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧