作者onemaydayme (喔椰~~)
看板PHP
标题[请益] 阵列数值排序
时间Wed Apr 23 18:50:14 2014
想请问各位大大
今天如果我有一维阵列的数值为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 ?
跪求各位大大解惑
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.86.131
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PHP/M.1398250217.A.6EF.html
2F:→ kerash:我是按照你的需求做,不是通用 04/23 20:56
3F:→ onemaydayme:多谢大大指点,但是我跑了你的程式,发现第一个case 04/23 22:03
4F:→ onemaydayme:会变成2~12印两次,我的意思是只有重复两次的数值 04/23 22:04
5F:→ onemaydayme:需要排,也就是总长度其实是不变的 04/23 22:04
6F:→ bibo9901:一楼看得懂规则喔 翻译一下 04/23 23:10
7F:→ mmis1000:找差一的塞,不然就找最小的 04/23 23:22
9F:→ kerash:咦.. 我测试时正确,我再看看 不过这个条件很奇怪就是.. 04/24 00:03
10F:→ mmis1000:上面贴的是假设没有负数的状况,所以省略了一些判断 04/24 00:18
11F:→ chenlarry:楼主给的两个数列排序之後的结果好像逻辑不一样 04/24 00:19
12F:→ chenlarry:推文给的都是最小跑到最大不重复然後再重新来过 04/24 00:19
13F:→ chenlarry:可是楼主第一个数列好像又不是这麽一回事,题目有错吗? 04/24 00:20
14F:→ chenlarry:希望楼主把题目讲清楚..不然根本没人知道规则是什麽... 04/24 00:22
15F:→ mmis1000:懂了,是後方优先 04/24 00:22
16F:→ mmis1000:可是那只是第一个的条件,这两个条件根本不一样 04/24 00:33
17F:→ chenlarry:搂主要解释 1.重复的数列是要排在前面还是後面? 04/24 00:33
18F:→ chenlarry:2.数列一开始就会是排序好得吗?还是有可能会打乱? 04/24 00:33
19F:→ chenlarry:根据楼主的回答会直接改变这只程式的复杂度 04/24 00:34
20F:→ mmis1000:是自动从有切齐的那头开始跑?(1的min跟2的max) 04/24 00:36
21F:→ mmis1000:楼主要的是被排序的连续数列,可是这些数列的排序是? 04/24 00:41
22F:→ mmis1000:以 头/尾为基准 递增/递减排序 ? 04/24 00:42
24F:→ kerash:修正 应该两个都对了 ... 少加了一个判断 04/24 01:32
26F:→ kerash:我的假设是,假如第一个遇到就重复,就先把重复贴完(直到 04/24 01:39
27F:→ kerash:不重复),贴完後再从头开始 foreach 一次,这是第一条 04/24 01:39
28F:→ kerash:第二个规则是,假设初始不重复,则一直跑,直到遇到重复 04/24 01:40
29F:→ kerash:接着将重复的数字记录,同时先将数列跑完一次,等结束後 04/24 01:40
30F:→ kerash:再将重复的那些数字loop跑完,这样来让两个条件同时达成 04/24 01:41
31F:→ kerash:但是这条件限制很大,就是中间假设不连续就会错误 04/24 01:41
34F:→ kerash:再贴下去我好像会贴太多了 :[ 04/24 01:52
35F:→ chenlarry:因为楼主没说清楚,我就以他给的例子所看到的部份来假设 04/24 01:56
36F:→ chenlarry:1.只会重复1次 2.只会重复开头或结尾其中一种 04/24 01:58
38F:→ chenlarry:重复的地方拿出来,再来决定要黏在哪 04/24 02:03
39F:→ chenlarry:我的解法也可以处理中间重复的情况 04/24 02:05
40F:→ MOONRAKER:开一个阵列,内容是2,3,4,...,12 04/24 08:33
41F:→ MOONRAKER:新阵列进来排序就照「模板阵列」的内容挑出来排 04/24 08:33
42F:→ MOONRAKER:超简单的,有没有规则都合适,爱怎麽排就怎麽排,压比 04/24 08:34
43F:→ onemaydayme:对不起我没说清楚规则,简单来说就是 04/24 12:43
44F:→ onemaydayme:有两对的一定是连号的数字 04/24 12:44
45F:→ onemaydayme:抓到有两对的那组数字,就在那段区间输出两次数字排 04/24 12:45
46F:→ onemaydayme:序就是了 04/24 12:45
47F:→ onemaydayme:而且这个数列一定是递增排序好的 04/24 12:47
48F:→ onemaydayme:如果有三对重复的就会贴三次这样 04/24 12:56
49F:→ onemaydayme:跑完k大的程式如果有三组重复的数字好像只会输出两次? 04/24 12:58
50F:→ onemaydayme:跑完m大的我发现可以ㄟ 04/24 13:08
51F:→ onemaydayme:感谢各位大大解惑QQ 04/24 13:16
52F:→ kerash:因为你的条件太少,我只针对重复数只有一次的状况去跑 04/24 20:36
53F:→ onemaydayme:sorry k大 我条件应该下清楚些! 04/24 22:07