当前位置:  开发笔记 > 编程语言 > 正文

如何在c ++中实现自然排序算法?

如何解决《如何在c++中实现自然排序算法?》经验,为你挑选了3个好方法。

我正在排序由文本和数字组成的字符串.我希望排序将数字部分排序为数字,而不是字母数字.

例如,我想要:abc1def,...,abc9def,abc10def

而不是:abc10def,abc1def,...,abc9def

有谁知道这个算法(特别是在c ++中)

谢谢



1> Paul Tomblin..:

我问了这个确切的问题(虽然在Java中)并且指向http://www.davekoelle.com/alphanum.html,它有许多语言的算法和实现.



2> Dominic Rodg..:

这被称为自然分类.还有一种算法在这里,看起来很有希望.

小心非ASCII字符的问题(请参阅Jeff关于该主题的博客文章).



3> Josh Kelley..:

可以使用C++的几种自然排序实现.简要回顾:

natural_sort<> - 基于Boost.Regex.

在我的测试中,它比其他选项慢大约20倍.

Dirk Jagdmann alnum.hpp,基于Dave Koelle的alphanum算法

MAXINT上的值可能存在整数溢出问题

Martin Pool's natsort- 用C语言编写,但在C++中很容易使用.

我见过的唯一一个C/C++实现提供了一个不区分大小写的版本,这似乎是"自然"排序的高优先级.

与其他实现一样,它实际上并不解析小数点,但它会执行特殊情况前导零(任何前导0都被假定为分数),这有点奇怪但可能有用.

PHP使用此算法.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有