看板 C_and_CPP 關於我們 聯絡資訊
不好意思 小弟新手 最近遇到一個問題 問題如下: 若英文字母的priority的大小如下BROYGLPW 要將12組資料依序排好: 先依priority,再依數值由小至大,將結果輸出至檔案. 結果檔案內容應如下: B 81 B 99 R 23 R 56 O 72 W 15 L 11 Y 55 O 78 W 89 P 98 G 56 該如何寫 請板上大大教一下 給個方向 謝謝 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.99.37
VictorTom:先依照字母排序資料, 然後再就每一組字母內的數字排序不 06/22 22:00
VictorTom:就得了?? 先排出 BB E F G HHH M NN // 隨便亂舉例的. 06/22 22:01
VictorTom:再對有重複字母的項目計次, 只排序裡面的數字.... 06/22 22:01
VictorTom:另一個方法, 如果數字都小於100, 字母也都只有一個.... 06/22 22:02
VictorTom:把每一筆資料變成 字母x100 + 數字; 字母要如何轉成數字 06/22 22:03
VictorTom:來乘100?? 看你要用ASCII code直接乘, 或者把每個字母重 06/22 22:03
VictorTom:新對應成一個數字, 如A=0, B=1, C=2等, 就可以對這個換 06/22 22:04
VictorTom:算後的數字直接排序了; 結論, 先問問你自己, 給你這些 06/22 22:04
VictorTom:資料, 你自己用大腦用紙筆算, 會怎樣排, 再想如何程式化 06/22 22:05
VictorTom:剛沒注意到字母的priority, 不過就上面的兩種方法來說也 06/22 22:06
VictorTom:不難轉換; 先把字母依priority給它另一個代表值來比大小 06/22 22:06
VictorTom:之後再挑一個方法來排序應該就可以了....@_@" 06/22 22:07
VictorTom:對了, 如果您懂得什麼叫做stable的sort, 只要使用stable 06/22 22:26
VictorTom:的sorting algorithm, 那麼先對數字做排序, 然後再依字 06/22 22:27
VictorTom:母的priority排序一次, 理論上問題就解決了.... 06/22 22:27
VictorTom:上面是google到的中文簡介sort的網頁, 看您有沒有需要XD 06/22 22:28
windincloud:這個應該就直接用Radix sort就解決吧~ 06/23 00:53
windincloud:http://en.wikipedia.org/wiki/Radix_sort 06/23 00:55
windincloud:詳細的說應該是將Radix sort想法應用上去~做法如v大後 06/23 00:58
windincloud:三句所說~ 06/23 00:58
softwind:作業自己做sort 工作請用qsort兩次 即可 06/23 01:44
softwind:int sortBy(const char *pL, const char *pR){ 06/23 01:53
softwind: return pL[0]*100+pL[1] - pR[0]*100+pR[1]; 06/23 01:53
softwind:} //end 06/23 01:53
leslieha:利用(字母 x 數值) 遞增排序 06/23 13:06
leslieha:耶...好像不行 06/23 13:07