我的项目中有以下要求。 我需要根据客户端提供的字符顺序对字符串进行排序。
例如:
用户提供的订单:d,a,A,D,z,p,P,Z
因此,如果我们有一些像AaP,aAp,PpZ,pPz.
根据用户给出的初始顺序排序后,输出应为aAp,AaP,pPz,PpZ as a>A>p>P
。
现在我正在考虑选择Unicode Collation algorithm
(http://unicode.org/reports/tr10/)来实现上述要求。
有人可以建议我使用以下几个方面的数据结构以获得更好的性能。
1.)将字符的ascii值映射到用户的给定顺序 - 我正在考虑使用map.But它可以是O(logn)进行访问。我不能使用hashmap作为我在c ++中的代码。
2.)在生成排序键之后,可以使用哪些排序技术来比较排序键。这里可以使用像radix排序这样的东西吗?
请分享您的想法..
虽然我的项目不需要以下要求,但我只想知道
如何根据上述Unicode排序规则算法链接中提到的Unicode值或ascii值实际创建排序规则元素?
Character Collation Element Name
0300 "`" [.0000.0021.0002] COMBINING GRAVE ACCENT
0061 "a" [.06D9.0020.0002] LATIN SMALL LETTER A
0062 "b" [.06EE.0020.0002] LATIN SMALL LETTER B
0063 "c" [.0706.0020.0002] LATIN SMALL LETTER C
0043 "C" [.0706.0020.0008] LATIN CAPITAL LETTER C
0064 "d" [.0712.0020.0002] LATIN SMALL LETTER D