0

我的项目中有以下要求。我需要根据客户端提供的字符顺序对字符串进行排序。

例如:

用户提供的订单:d,a,A,D,z,p,P,Z

所以如果我们有一些字符串,比如AaP,aAp,PpZ,pPz.

排序后的输出应aAp,AaP,pPz,PpZ as a>A>p>P根据用户给出的初始顺序。

现在我正在考虑选择Unicode Collation algorithmhttp://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
4

0 回答 0