我的项目中有以下要求。我需要根据客户端提供的字符顺序对字符串进行排序。
例如:
用户提供的订单: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。但它可以是O(logn)进行访问。我不能使用hashmap,因为我在c ++中编码。
2.)在生成排序键后,可以使用哪些排序技术来比较排序键。这里可以使用基数排序之类的东西吗?
请分享你的想法..
虽然我的项目不需要以下要求,但我只想知道
如上面关于 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