作者yauhh (喲)
看板C_and_CPP
標題Re: 雙層排序問題
時間Tue Jun 23 13:36:29 2009
※ 引述《aoaay (低調奢華簡約時尚)》之銘言:
: 不好意思 小弟新手
: 最近遇到一個問題
: 問題如下:
: 若英文字母的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
: 該如何寫 請板上大大教一下 給個方向 謝謝
先根據數字 quick sort,得
L 11, W 15, R 23, Y 55, R 56, G 56, O 72, O 78, B 81, W 89, P 98, B 99.
然後以英文字為 radix, 做 radix sort. 做 radix sort 是有多少數目要準備多少槽.
像你的例子, radix 有 BROYGLPW 八項,就要準備八個陣列. 將上面排序的數字,由小
到大,依序將每一項目放進八個槽中. 得
B R O Y G L P W
81 99 23 56 72 78 55 56 11 98 15 89
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.113.220
推 ledia:compare function 改一改, qsort 一次即可 06/23 13:50
推 joefaq:推樓上的作法 06/23 17:41
推 softwind:單純用 一次qsort的話 BROYG..的index要寫死 06/24 01:32
→ softwind:but如果要用文字先排的話 就要先bsearch出prior再qsort. 06/24 01:33
→ adrianshum:現在弄八個 array 也一樣是寫死. 當然是 compare func 06/24 12:00
→ adrianshum:寫清楚比較好懂 06/24 12:00