实现unicode整理算法的示例代码

时间:2015-03-17 18:08:48

标签: algorithm sorting unicode uca

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

例如:

用户提供的订单: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.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

0 个答案:

没有答案