专利名称:一种字符串的排序方法
技术领域:
本发明涉及数据处理,尤其涉及一种字符串的排序方法。
背景技术:
在科技不断发展的今天,计算机的应用领域越来越广,但是受硬件和存储空间大小的限制,如何在有限的资源条件下,提高软件的运行速度是软件开发人员一直努力的方向。在众多方法中,对信息的排序成为程序设计人员考虑的因素之一,排序方法选择得当与否直接影响程序执行的速度和辅助存储空间的占有量,进而影响整个软件的性能。排序是程序设计中的一个重要的操作,排序过程是将一个记录的任意序列,在一定规则的约束下,生成一个有序的序列。排序可以分为内排序和外排序。内部排序是指整个排序过程不需要访问外存便能完成;外部排序则是整个序列的排序过程不可能在内存中完成,通常这种情况下记录的数量很大。排序算法主要有插入排序、选择排序、交换排序、归并排序和分配排序。这些排序即可应用于常规的数值排序,也可应用于字符串的排序。但是对字符串排序,存在效率不高、无法满足实际开发中遇到的情况,所以需要专门处理字符串的字符串排序算法。最常见的字符串排序算法有字典排序。Trie树又名字典树,从字面意思即可理解,这种树的结构像英文字典一样,相邻的单词一般前缀相同,之所以时间复杂度低,是因为其采用了以空间换取时间的策略。请参阅图1,为一个针对字符串排序的Trie树(我们假设在这里字符串都是小写字母),每个结点有26个分支,每个分支代表一个字母,结点存放的是从root节点到达此结点的路经上的字符组成的字符串。将每个字符串插入到trie树中,到达特定的结尾节点时,在这个节点上进行标记,如插入〃pls〃和”vn”,第一个字母为p,沿着P往下,然后第二个字母为1,沿着I往下,第三个为S,沿着s往下,由于字符串最后一个字符为’ \0’,因而结束,不再往下了,然后在这个节点上标记pis. count++,即其个数增加1.同理” vn”。Trie树典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是最大限度地减少无谓的字符串比较,查询效率比哈希表高。但是它的应用主要是针对大量的数据,对于数据量比较小的排序,这种排序方法不适合。如在某些系统开发过程中,需要对一些特殊的字符串进行排序,需要排序的字符串有如下特点1.长度一般都在N (N〈=50)个字符以内;2.有很大一部分字符串是由数字字符组成而且长度不一 ;3.需要进行排序的字符串在M(M〈=10000)个以内;4.对某些系统,需要特殊的排序方式。
发明内容
针对现有技术的特点,本发明的目的是提供一种字符串的排序方法,解决在某些系统中对数据量比较小的字符串进行排序不适合的问题。为了实现上述目的,本发明的技术方案为一种字符串的排序方法,包括如下步骤(1)对待排序字符串数组按字符串的长度大小进行排序;(2)在已经按字符串的长度排好序的字符串数组中,对字符串长度相同的字符串数组按字符串值的大小进行排序。优选地,在步骤(I)中,字符串长度越大,则字符串越大。优选地,在步骤(2)中,字符串值越大,则字符串越大。与现有技术相比,本发明的字符串排序方法能够实现在数据量不大的情况、对字符串的现实或者使用有特点要求的情况下,对字符串进行排序,使用这种排序方法方便简洁,直观,更符合用户的观点。比如在进行网元直连维护的时候,需要添加用户账号来进行维护,表示账号的字符串就满足上面这种字符串的特点,需要对它进行排序,让这些账号显示得有规律,让用户看起来更友好。
下面结合附图对本发明作进一步的详细说明。图1是现有技术的Trie树示意 图2是本发明的流程框 图3是本发明的按字符串长度排序流程框 图4是本发明的按字符串值排序流程框图。
具体实施例方式请参阅图2,先对待排序字符串数组进行按长度大小排序,再对该排好序的数组,长度相同的按值大小排序。请参阅图3,按长度排序,规则是字符串长度越大,则字符串越大;得到的是按长度排好序的字符串数组。例如
待排序字符数组
权利要求
1.一种字符串的排序方法,其特征在于,包括如下步骤(1)对待排序字符串数组按字符串的长度大小进行排序;(2)在已经按字符串的长度排好序的字符串数组中,对字符串长度相同的字符串数组按字符串值的大小进行排序。
2.根据权利要求1所述的字符串的排序方法,其特征在于,在步骤(I)中,字符串长度越大,则字符串越大。
3.根据权利要求1所述的字符串的排序方法,其特征在于,在步骤(2)中,字符串值越大,则字符串越大。
全文摘要
本发明公开了一种字符串的排序方法,包括如下步骤(1)对待排序字符串数组按字符串的长度大小进行排序;(2)在已经按字符串的长度排好序的字符串数组中,对字符串长度相同的字符串数组按字符串值的大小进行排序。本发明能够实现在数据量不大的情况、对字符串的现实或者使用有特点要求的情况下,对字符串进行排序,使用这种排序方法方便简洁,直观,更符合用户的观点。比如在进行网元直连维护的时候,需要添加用户账号来进行维护,表示账号的字符串就满足上面这种字符串的特点,需要对它进行排序,让这些账号显示得有规律,让用户看起来更友好。
文档编号G06F17/30GK103020272SQ201210577739
公开日2013年4月3日 申请日期2012年12月27日 优先权日2012年12月27日
发明者何睿, 蓝进华, 李艳平 申请人:广东佳和通信技术有限公司