[請益] 陣列數值排序

作者: 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