资料排序方法、其机器可读取媒体以及相关的装置的制作方法

文档序号:6510616阅读:143来源:国知局
专利名称:资料排序方法、其机器可读取媒体以及相关的装置的制作方法
技术领域
本发明是相关于资料排序方法,尤指一种不需使用海量存储器空间的资料排序方法。
背景技术
排序(sorting)是现今各种电子系统中很常会处理到的一项工作,其可将多笔资料依照特定的顺序(例如依照各笔资料的名称的字母顺序)排列出来。一般而言,排序的主要目的是要让人类的搜寻工作能够更有效率,因为经过排序之后的资料对于人类而言会较为方便查阅。
在处理器需要对储存于储存装置(例如非挥发性的储存装置)中的多笔资料进行排序的工作时,通常处理器都需要使用到一存储器(例如挥发性的存储器)来作为辅助的工具,因为处理器对于存储器的存取速度一般都会快于处理器对于储存装置的存取速度。有一种简单的作法,是在处理器执行排序的工作之前,先将储存装置中所有需被排序的资料的全部信息都复制到存储器中,之后处理器再直接针对存储器中的资料进行排序。举例来说,若处理器要依照文件名的字母顺序来对多个档案进行排序时,可将每一档案的完整档名先复制到存储器之中,处理器再针对储存于存储器之中每一档案的完整档名进行排序。此种作法虽然可以省下大量读取储存装置所需的时间,然而,却也是一种很耗费存储器空间的作法,尤其是在每笔需排序的资料都包含大量的信息时,存储器空间的浪费将会是严重的问题。
此外,有些处理器会将排序到一半的结果或是排序的完整结果以档案的方式存放回储存装置之中,然而,由于之后处理器必须透过储存装置才能存取到排序相关的档案,因此在后续的分析或存取上会耗费很多时间。
事实上,在一般的个人计算机中,由于存储器资源较为充足,因此较能接受耗费较多存储器空间的排序方法,然而,有些电子装置(例如,移动电话)常常仅具有非常少量的存储器空间可供使用,因此随着越来越多种存储器空间较匮乏的电子装置的陆续问世,也需要配合这些电子装置设计出较节省存储器空间的排序方法。

发明内容
因此本发明的目的之一,在于提供一种较为节省存储器空间的排序方法,以解决现有技术所面临的问题。
根据以下的实施例,本发明是揭露一种排序方法,用来配合使用一存储器以排序一储存装置中所储存的多笔资料,该方法包含有(a)自该储存装置中读出一欲排序资料的完整信息;(b)仅比较该欲排序资料的部分信息与记录于该存储器中的至少一已排序资料的部分信息,以决定出该欲排序资料以及该至少一已排序资料的顺序;以及(c)依据所决定出的顺序,仅将该至少一已排序资料的部分信息以及该欲排序资料的部分信息记录于该存储器中。
此外,本发明所提出的方法可以透过程序代码的方式收录于实体媒体中。当程序代码被机器加载且执行时,机器即可变成用以实行本发明的装置。
由于本发明在排序的过程中,只会将已排序资料的部分信息以及其地址存放在存储器中,而不会将每笔资料的完整信息都存放在存储器中,因此相较于现有技术的作法,本发明的作法可以省下相当多的存储器空间,故可更适用于存储器空间较为匮乏的电子装置之中。


图1为本发明的装置架构的示意图。
图2为本发明的方法的流程图。
图3为储存装置中所储存的多笔待排序资料的一个例子。
图4为进行排序工作时,存储器中所记录的资料的变化状况。
符号说明110处理器 120储存装置 130存储器具体实施方式
请参阅图1,图1为本发明所提出的装置架构的一实施例示意图。图1所示的装置架构包含有一处理器110、一储存装置120、以及一存储器130。举例而言,图1所示的装置可设置于一移动电话之中。在本实施例中,储存装置120为一非挥发性储存装置,例如,硬盘、闪存(Flash Memory),用来储存多笔待排序资料(每一笔待排序资料可以是一个档案、一个资料匣、或是一组字符串......);存储器130为一挥发性储存装置,例如,随机存取存储器(Random Access Memory,RAM),用来于处理器110进行排序工作时,提供存储空间以储存一搜寻指针(search pointer)、一欲排序资料的完整信息、一部分信息列表(partial information list)、以及一地址列表(addresslist)。其中,该部分信息列表是依照排序的结果,记录着已排序资料的部分信息(partial information);该地址列表则是依照排序的结果,记录着已排序资料位于储存装置120中的地址。图2所示则为本发明的方法的流程图,以下将配合图1所示的装置架构,来说明处理器110所执行的各个步骤步骤210依据储存装置120中一欲排序资料的地址来设定该搜寻指针。
步骤220依据该搜寻指针,自储存装置120中读出该欲排序资料的完整信息,并仅比较该欲排序资料的部分信息与该部分信息列表中所记录的已排序资料的部分信息,来决定出该欲排序资料以及该(些)已排序资料的顺序。
步骤230若可以决定出该欲排序资料以及该(些)已排序资料的顺序,则进入步骤250;否则则进入步骤240。
步骤240依据存储器130中的该地址列表,自储存装置120中读出该(些)已排序资料中部分资讯与该欲排序资料的部分信息相同的已排序资料的完整信息,并比较所读出的已排序资料的完整信息与该欲排序资料的完整信息,以决定出该欲排序资料以及该(些)已排序资料的顺序。
步骤250依据步骤220或步骤240所决定出该欲排序资料以及该(些)已排序资料的顺序,来更新存储器130中的该部分信息列表以及该地址列表。
步骤260若排序的工作已进行完成,则结束此流程图,否则则回到步骤210。
以下则将提供一个例子,来更详细说明以上的各个步骤。首先,假设于储存装置120之中总共存放了三笔待排序资料,这三笔待排序资料分别是三个档案的文件名,三笔资料以及其存放于储存装置120中的地址如图3中的表310所示。而由于此处是要以各档案的文件名的字母顺序来进行排序,因此流程图中所述的部分信息将会是文件名的前两个字符,至于完整信息则是文件名中所有的字符。当然,系统设计者亦可以自行决定图2中对于「部分信息」及「完整信息」的定义。
第一次执行到步骤210时,处理器110会依照第一笔欲排序资料(即档案一)于储存装置120中的所在地址,设定该搜寻指针。接下来,于步骤220中,处理器110会依照该搜寻指针,自储存装置120中读出档案一的完整信息(亦即aaaa)。此时,由于尚未有已排序的资料存放于存储器130中(亦即存储器130中的该部分信息列表以及该地址列表都是空的),因此不用进行比较的工作,即可直接决定出档案一的文件名的顺序,处理器110可直接进入步骤230、250,并于步骤250中,将档案一的部分信息(即文件名的前两个字符aa)以及位于储存装置120中的地址(0001)分别记录于该部分信息列表以及该地址列表中。此时存储器130中所储存的资料将会如图4中的表410所示。
接下来,由于储存装置120中还有两笔待排序的资料,因此经过步骤260之后,处理器110会回到步骤210,依照下一笔欲排序资料(亦即档案二)于储存装置120中的地址来设定该搜寻指针。设定完该搜寻指针之后,于步骤220中,处理器110会依照该搜寻指针,读出档案二的完整信息(亦即档案二的档名bbbb),并比较档案二的部分信息(即文件名的前两个字符bb)与该部分信息列表中已排序资料的部分信息(一个字段存着aa),由于仅比较档案一与档案二的部分信息aa与bb即可决定出这两个文件名的顺序,因此,处理器会从步骤220进入步骤230、250(而不会进入步骤240),并依照所决定出的顺序,于步骤250中修改该部分信息列表以及该地址列表,将档案二的部分信息bb记录于该部分信息列表中位于档案一的部分信息aa之后的字段,将档案二的地址0007记录于该地址列表中于档案一的地址0001之后的字段。此时存储器130中所储存的资料将会如第四图中的表420所示。
由于储存装置120中还有一笔尚未被排序的资料,故从步骤250进入步骤260之后,系统会再次回到步骤210,依照下一笔欲排序资料(亦即档案三)于储存装置120中的地址来设定该搜寻指针。进入步骤220后,处理器110会依照该搜寻指针,读出档案三的完整信息(亦即档案三的档名aaac),并比较档案三的部分信息(即文件名的前两个字符aa)与该部分信息列表中已排序资料的部分信息(即档案一的部分信息aa与档案二的部分信息bb),虽然此时可以顺利决定出档案二与档案三的顺序(因为aa应该要排在bb前面),但是,由于档案一的部分信息aa与档案三的部分信息aa是相同的,因此,仅比较档案一的部分信息aa与档案三的部分信息aa并无法决定出这档案一与档案三的顺序,因此,处理器110会从步骤230进入步骤240。于步骤240中,处理器110是依据该地址列表中相关于档案一的字段(即0001),自储存装置120中读出档案一的完整信息aaaa,并比较档案一的完整信息(即文件名中的所有字符aaaa)与档案三的完整信息(即文件名中的所有字符aaac),由于此时已可决定出这两个文件名的顺序,因此,处理器会从步骤240进入步骤230、250,并依照所决定出的顺序,于步骤250中修改该部分信息列表以及该地址列表,将档案三的部分信息aa记录于该部分信息列表中位于档案一的部分信息aa与档案二的部分信息bb之间的字段,并将档案三的地址0011记录于该地址列表中位于档案一的地址0001与档案二的地址0007之间的字段。此时存储器130中所储存的资料将会如第四图中的表430所示。再经过步骤260之后,处理器110即可结束排序的工作。
在上述的排序工作结束之后,可以视状况,决定是否要释放出(release)存储器130中用以存放该搜寻指针、最后一笔被排序的资料的完整信息、以及该部分信息列表的储存空间。至于处理器110则可以透过存储器130中所储存的该地址列表(其中包含有依照顺序储存的各笔已排序资料位于储存装置120中的地址),来依序存取各个已排序资料的完整信息,以将排序的结果显示出来。若排序的结果已经显示完成,且没有后续的使用需求时,则可以再释放出存储器130中用以存放该地址列表的储存空间。
由于本发明在排序的过程中,仅会将已排序资料的部分信息记录于存储器之中(而非每一笔已排序资料的完整信息),因此排序的工作不会占用到存储器130太多的空间。只有在无法经由部分信息的比较来决定出两笔以上资料的顺序时,处理器110才会再至储存装置120读取出所需资料的完整信息,并藉由比较完整信息的方式,来决定之前无法决定出的顺序。明显地,本发明确实可以比现有技术更为节省存储器的空间。
请注意,虽然在上述的说明中,是以「插入排序算法」(insertion sortalgorithm)为例进行说明,然而,本发明所提出的方法与装置亦可以配合其它的排序算法一同使用。至于每一笔待排序资料的「部分信息」与「完整信息」的定义则可以由设计者自行决定,举例来说,部分信息所包含的讯息越多,图2中的步骤220就越容易决定出各笔资料的顺序,而较不需进入步骤240之中进行完整信息的比较,然而,此种作法却也会消耗掉更多存储器130的空间。此外,在步骤240中进行完整信息的比较时,只有对于无法与欲排序资料决定出顺序的已排序资料,处理器110才需要依据该地址列表中相关的地址,将该(些)已排序资料的完整信息自储存装置120中读出,以与欲排序资料的完整信息进行比较。
除此之外,以上所述本发明的方法与装置(或特定型态或其部分),皆可以透过程序代码的型态,包含于实体媒体(如软盘、光盘片、硬盘、或是任何其它机器可读取(如计算机可读取)储存媒体)之中。其中,当程序代码被机器,如计算机加载且执行时,此机器变成用以参与本发明的装置(例如图1所示的例子)。本发明的方法与装置也可以以程序代码型态,透过一些传送媒体(如电线或电缆、光纤、或是任何传输型态)进行传送。其中,当程序代码被机器(如计算机)接收、加载且执行时,此机器即可变成用以参与本发明的装置。当在一般用途处理器实作时,程序代码结合处理器则可提供一操作类似于应用特定逻辑电路的独特装置。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
权利要求
1.一种排序方法,用来配合使用一存储器以排序一储存装置中所储存的多笔资料,该方法包含有(a)自该储存装置中读出一欲排序资料的完整信息;(b)仅比较该欲排序资料的部分信息与记录于该存储器中的至少一已排序资料的部分信息,以决定出该欲排序资料以及该至少一已排序资料的顺序;(c)若无法于步骤(b)中决定出该欲排序资料以及该至少一已排序资料的顺序,则再自该储存装置中,读出该至少一已排序资料中部分资讯与该欲排序资料的部分信息相同的已排序资料的完整信息,并比较所读出的已排序资料的完整信息与该欲排序资料的完整信息,以决定出该欲排序资料以及该至少一已排序资料的顺序;以及(d)依据步骤(b)或步骤(c)所决定出的顺序,仅将该至少一已排序资料的部分信息以及该欲排序资料的部分信息记录于该存储器中。
2.根据权利要求1所述的方法,其另包含有(e)依据步骤(b)或步骤(c)所决定出的顺序,将该至少一已排序资料位于该储存装置中的地址以及该欲排序资料位于该储存装置中的地址记录于该存储器中。
3.根据权利要求2所述的方法,其中步骤(c)另包含有依据该存储器中所记录的该至少一已排序资料位于该储存装置中的地址,自该储存装置中,读出该至少一已排序资料中部分信息与该欲排序资料的部分信息相同的已排序资料的完整信息。
4.一种排序方法,用来配合使用一存储器以排序一储存装置中所储存的多笔资料,该方法包含有(a)自该储存装置中读出一欲排序资料的完整信息;(b)仅比较该欲排序资料的部分信息与记录于该存储器中的至少一已排序资料的部分信息,以决定出该欲排序资料以及该至少一已排序资料的顺序;以及(c)依据所决定出的顺序,仅将该至少一已排序资料的部分信息以及该欲排序资料的部分信息记录于该存储器中。
5.根据权利要求4所述的方法,其另包含有(d)若无法于步骤(b)中决定出该欲排序资料以及该至少一已排序资料的顺序,则再自该储存装置中,读出该至少一已排序资料中部分信息与该欲排序资料的部分信息相同的已排序资料的完整信息,并比较所读出的已排序资料的完整信息与该欲排序资料的完整信息,以决定出该欲排序资料以及该至少一已排序资料的顺序。
6.根据权利要求5所述的方法,其另包含有(e)依据步骤(b)或步骤(d)所决定出的顺序,将该至少一已排序资料位于该储存装置中的地址以及该欲排序资料位于该储存装置中的地址记录于该存储器中。
7.根据权利要求6所述的方法,其中步骤(d)另包含有依据该存储器中所记录的该至少一已排序资料位于该储存装置中的地址,自该储存装置中,读出该至少一已排序资料中部分信息与该欲排序资料的部分信息相同的已排序资料的完整信息。
8.一种装置,其包含有一储存装置,用来储存多笔资料;一处理器,耦接于该储存装置,用来排序该储存装置中所储存的该多笔资料;一存储器,耦接于该处理器,用来依据该处理器所决定出的顺序,记录至少一已排序资料的部分信息;其中,对于储存于该储存装置中的一欲排序资料,该处理器是自该储存装置中读取该欲排序资料的完整信息,并比较该欲排序资料的部分信息与记录于该存储器中该至少一已排序资料的部分信息,以决定出该欲排序资料以及该至少一已排序资料的顺序。
9.根据权利要求8所述的装置,其中该存储器另依据该处理器所决定出的顺序,记录至少一已排序资料位于该储存装置中的地址以及该欲排序资料位于该储存装置中的地址。
10.根据权利要求9所述的装置,其中若该处理器无法依据比较该欲排序资料的部分信息与该至少一已排序资料的部分信息来决定出该欲排序资料与该至少一已排序资料的顺序,则该处理器是自该储存装置中,读出该至少一已排序资料中部分信息与该欲排序资料的部分信息相同的已排序资料的完整信息,并比较所读出的已排序资料的完整信息与该欲排序资料的完整信息,以决定出该欲排序资料以及该至少一已排序资料的顺序。
11.根据权利要求10所述的装置,其中该处理器是依据记录于该存储器中该至少一已排序资料位于该储存装置中的地址,自该储存装置中,读出该至少一已排序资料中部分信息与该欲排序资料的部分信息相同的已排序资料的完整信息。
12.根据权利要求8所述的装置,其是设置于一移动电话之中。
13.一种机器可读取媒体,其储存有一程序,该程序是用以于执行时,致使一处理器配合使用一存储器以排序一储存装置中所储存的多笔资料,该方法包含有(a)自该储存装置中读出一欲排序资料的完整信息;(b)仅比较该欲排序资料的部分信息与记录于该存储器中的至少一已排序资料的部分信息,以决定出该欲排序资料以及该至少一已排序资料的顺序;(c)若无法于步骤(b)中决定出该欲排序资料以及该至少一已排序资料的顺序,则再自该储存装置中,读出该至少一已排序资料中部分信息与该欲排序资料的部分信息相同的已排序资料的完整信息,并比较所读出的已排序资料的完整信息与该欲排序资料的完整信息,以决定出该欲排序资料以及该至少一已排序资料的顺序;以及(d)依据步骤(b)或步骤(c)所决定出的顺序,仅将该至少一已排序资料的部分信息以及该欲排序资料的部分信息记录于该存储器中。
14.一种机器可读取媒体,其储存有一程序,该程序是用以于执行时,致使一处理器配合使用一存储器以排序一储存装置中所储存的多笔资料,该方法包含有(a)自该储存装置中读出一欲排序资料的完整信息;(b)仅比较该欲排序资料的部分信息与记录于该存储器中的至少一已排序资料的部分信息,以决定出该欲排序资料以及该至少一已排序资料的顺序;以及(c)依据所决定出的顺序,仅将该至少一已排序资料的部分信息以及该欲排序资料的部分信息记录于该存储器中。
全文摘要
本发明是揭露一种资料排序方法,用来配合使用一存储器以排序一储存装置中所储存的多笔资料,该方法包含有(a)自该储存装置中读出一欲排序资料的完整信息;(b)仅比较该欲排序资料的部分信息与记录于该存储器中的至少一已排序资料的部分信息,以决定出该欲排序资料以及该至少一已排序资料的顺序;以及(c)依据所决定出的顺序,仅将该至少一已排序资料的部分信息以及该欲排序资料的部分信息记录于该存储器中。
文档编号G06F17/30GK1728136SQ20051000258
公开日2006年2月1日 申请日期2005年1月21日 优先权日2004年7月30日
发明者许嘉容 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1