[请益] 阵列数值排序

楼主: onemaydayme (喔椰~~)   2014-04-23 18:50:14
想请问各位大大
今天如果我有一维阵列的数值为2,2,3,3,4,4,5,5,6,7,8,9,10,11,12
要怎么把它自订排序变成2,3,4,5,2,3,4,5,6,7,8,9,10,11,12 ?
或者是2,3,4,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12
要怎么把它变成2,3,4,5,6,7,8,9,10,11,12,6,7,8,9,10,11,12 ?
跪求各位大大解惑
作者: kerash (.TW)   2014-04-23 20:55:00
http://paste.ideaslabs.com/show/B2LVWg5te0我是按照你的需求做,不是通用
楼主: onemaydayme (喔椰~~)   2014-04-23 22:03:00
多谢大大指点,但是我跑了你的程式,发现第一个case会变成2~12印两次,我的意思是只有重复两次的数值需要排,也就是总长度其实是不变的
作者: bibo9901 (function(){})()   2014-04-23 23:10:00
一楼看得懂规则喔 翻译一下
作者: mmis1000 (秋月恋枫)   2014-04-23 23:22:00
找差一的塞,不然就找最小的http://ideone.com/AHivq4
作者: kerash (.TW)   2014-04-24 00:03:00
咦.. 我测试时正确,我再看看 不过这个条件很奇怪就是..
作者: mmis1000 (秋月恋枫)   2014-04-24 00:18:00
上面贴的是假设没有负数的状况,所以省略了一些判断
作者: chenlarry (小鬼)   2014-04-24 00:19:00
楼主给的两个数列排序之后的结果好像逻辑不一样推文给的都是最小跑到最大不重复然后再重新来过可是楼主第一个数列好像又不是这么一回事,题目有错吗?希望楼主把题目讲清楚..不然根本没人知道规则是什么...
作者: mmis1000 (秋月恋枫)   2014-04-24 00:22:00
懂了,是后方优先可是那只是第一个的条件,这两个条件根本不一样
作者: chenlarry (小鬼)   2014-04-24 00:33:00
搂主要解释 1.重复的数列是要排在前面还是后面?2.数列一开始就会是排序好得吗?还是有可能会打乱?根据楼主的回答会直接改变这只程式的复杂度
作者: mmis1000 (秋月恋枫)   2014-04-24 00:36:00
是自动从有切齐的那头开始跑?(1的min跟2的max)楼主要的是被排序的连续数列,可是这些数列的排序是?以 头/尾为基准 递增/递减排序 ?
作者: kerash (.TW)   2014-04-24 01:32:00
http://paste.ideaslabs.com/show/2iAdQVnqGG修正 应该两个都对了 ... 少加了一个判断http://pastebin.com/0XAHzAMf 换一个空间贴比较好看我的假设是,假如第一个遇到就重复,就先把重复贴完(直到不重复),贴完后再从头开始 foreach 一次,这是第一条第二个规则是,假设初始不重复,则一直跑,直到遇到重复接着将重复的数字记录,同时先将数列跑完一次,等结束后再将重复的那些数字loop跑完,这样来让两个条件同时达成但是这条件限制很大,就是中间假设不连续就会错误
作者: mmis1000 (秋月恋枫)   2014-04-24 01:43:00
http://ideone.com/QEjDQk 头尾各sort一次@kerash,用 http://ideone.com/ 贴还可以看编译结果
作者: kerash (.TW)   2014-04-24 01:52:00
再贴下去我好像会贴太多了 :[
作者: chenlarry (小鬼)   2014-04-24 01:56:00
因为楼主没说清楚,我就以他给的例子所看到的部份来假设1.只会重复1次 2.只会重复开头或结尾其中一种http://ideone.com/QtIFOC 所以我的思考方式就是直接把重复的地方拿出来,再来决定要黏在哪我的解法也可以处理中间重复的情况
作者: MOONRAKER (㊣牛鹤鳗毛人)   2014-04-24 08:33:00
开一个阵列,内容是2,3,4,...,12新阵列进来排序就照“模板阵列”的内容挑出来排超简单的,有没有规则都合适,爱怎么排就怎么排,压比
楼主: onemaydayme (喔椰~~)   2014-04-24 12:43:00
对不起我没说清楚规则,简单来说就是有两对的一定是连号的数字抓到有两对的那组数字,就在那段区间输出两次数字排序就是了而且这个数列一定是递增排序好的如果有三对重复的就会贴三次这样跑完k大的程式如果有三组重复的数字好像只会输出两次?跑完m大的我发现可以ㄟ感谢各位大大解惑QQ
作者: kerash (.TW)   2014-04-24 20:36:00
因为你的条件太少,我只针对重复数只有一次的状况去跑
楼主: onemaydayme (喔椰~~)   2014-04-24 22:07:00
sorry k大 我条件应该下清楚些!

Links booklink

Contact Us: admin [ a t ] ucptt.com