作者aoaay (低调奢华简约时尚)
看板C_and_CPP
标题双层排序问题
时间Mon Jun 22 21:33:33 2009
不好意思 小弟新手
最近遇到一个问题
问题如下:
若英文字母的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
1F:→ VictorTom:先依照字母排序资料, 然後再就每一组字母内的数字排序不 06/22 22:00
2F:→ VictorTom:就得了?? 先排出 BB E F G HHH M NN // 随便乱举例的. 06/22 22:01
3F:→ VictorTom:再对有重复字母的项目计次, 只排序里面的数字.... 06/22 22:01
4F:→ VictorTom:另一个方法, 如果数字都小於100, 字母也都只有一个.... 06/22 22:02
5F:→ VictorTom:把每一笔资料变成 字母x100 + 数字; 字母要如何转成数字 06/22 22:03
6F:→ VictorTom:来乘100?? 看你要用ASCII code直接乘, 或者把每个字母重 06/22 22:03
7F:→ VictorTom:新对应成一个数字, 如A=0, B=1, C=2等, 就可以对这个换 06/22 22:04
8F:→ VictorTom:算後的数字直接排序了; 结论, 先问问你自己, 给你这些 06/22 22:04
9F:→ VictorTom:资料, 你自己用大脑用纸笔算, 会怎样排, 再想如何程式化 06/22 22:05
10F:→ VictorTom:刚没注意到字母的priority, 不过就上面的两种方法来说也 06/22 22:06
11F:→ VictorTom:不难转换; 先把字母依priority给它另一个代表值来比大小 06/22 22:06
12F:→ VictorTom:之後再挑一个方法来排序应该就可以了....@_@" 06/22 22:07
13F:推 VictorTom:对了, 如果您懂得什麽叫做stable的sort, 只要使用stable 06/22 22:26
14F:→ VictorTom:的sorting algorithm, 那麽先对数字做排序, 然後再依字 06/22 22:27
15F:→ VictorTom:母的priority排序一次, 理论上问题就解决了.... 06/22 22:27
17F:→ VictorTom:上面是google到的中文简介sort的网页, 看您有没有需要XD 06/22 22:28
18F:→ windincloud:这个应该就直接用Radix sort就解决吧~ 06/23 00:53
20F:→ windincloud:详细的说应该是将Radix sort想法应用上去~做法如v大後 06/23 00:58
21F:→ windincloud:三句所说~ 06/23 00:58
22F:→ softwind:作业自己做sort 工作请用qsort两次 即可 06/23 01:44
23F:→ softwind:int sortBy(const char *pL, const char *pR){ 06/23 01:53
24F:→ softwind: return pL[0]*100+pL[1] - pR[0]*100+pR[1]; 06/23 01:53
25F:→ softwind:} //end 06/23 01:53
26F:推 leslieha:利用(字母 x 数值) 递增排序 06/23 13:06
27F:→ leslieha:耶...好像不行 06/23 13:07