存储元素的方法与系统及查找元素的方法与系统的利记博彩app

文档序号:6562620阅读:156来源:国知局
专利名称:存储元素的方法与系统及查找元素的方法与系统的利记博彩app
技术领域
本发明涉及存储元素的方法与系统及查找元素的方法与系统,特别涉及一种利用哈希算法存储元素的方法与系统及查找元素的方法与系统。
背景技术
随着时代的发展,从众多的信息中筛选自己需要的内容成了一项重要的技术,确定一个元素是否在一个特定的集合中是这项技术中的一小部分。
目前,当我们需要确定一个元素是否在一个集合中时,最常规的做法就是用顺序查找法。顺序查找的思想是是将要查找的元素与集合中的每一个元素顺序逐个进行比较,相同即为查找成功,否则查找失败。
如果集合中的元素能够进行有序排列的(例如英文字符串可以按照字母表的顺序进行排列),可以先对该集合的元素进行升序或降序进行预排,之后用二分查找法进行查找。二分查找的基本思想是首先将要集合中的元素按关键字排序,其次将要查找的元素与集合中元素中间位置的值比较,相同,则查找成功;不等,则中间数据大于或小于要查找的元素,无论怎样查找将在一半的数据中查找。
但是以上两种查找方法的查找效率都不高,如果是无序的集合,查找的时间跟集合中元素的数量成正比;即便集合是有序的,采用二分法时的查找也比顺序查找的效率提高不大,因为当集合中的元素是以字符串的形式存在时,查找的过程中就需要逐个比较字符串里面的单个字符的值,这样降低了查找的效率。
由于大多集合中的元素都是以字符串的形式存在,除了存储字符串本身,还需要存储字符串以外的附加信息,例如字符串长度信息等,但是这些信息都是我们在查找过程中不需要的。因此这些不必要信息占用了过多的资源,造成了资源浪费。
综上所述,现有技术虽然能够查找元素是否在特定的集合中,但是效率较低,而且占用的资源较大。

发明内容
本发明要解决的问题是查找效率不高与占用资源大的问题,而通过本发明的方法,将原有的元素通过特殊的方法生成索引值,即有效减少了资源浪费,又提高了查找速度。
为解决上述技术问题,本发明的目的是通过以下方法实现的将集合中所有元素运用哈希算法生成与元素一一对应的索引值,组成索引值数组;将索引值数组保存。
其中,生成索引值是运用下列特定哈希算法索引值=(((L0*K+L1)*K+L2+......)*K+L(M-1)mod2N;K为预置的哈希键值;L0......L(M-1)为通过预置的哈希表查找出的编码数据,L0......L(M-1)对应于元素的每一个字符;N为预置的索引值的存储位数。
其中,将保存的索引值数组进行排序。
其中,所述的哈希关键值为两位数或31。
为解决上述问题,本发明还提供一种查找元素的方法,该方法具体为将集合中所有元素运用哈希算法生成与元素一一对应的索引值,组成索引值数组;将索引值数组保存;输入要查找的元素,运用哈希算法生成与该元素对应的索引值,在所述的索引值数组中查找该索引值。
其中,生成索引值是运用下列特定哈希算法索引值=(((L0*K+L1)*K+L2+......)*K+L(M-1)mod2N;K为预置的哈希键值;
L0......L(M-1)为通过预置的哈希表查找出的编码数据,L0......L(M-1)对应于元素的每一个字符;N为预置的索引值的存储位数。
其中,将保存的索引值数组进行排序。
其中,所述的哈希关键值为两位数或31。
为实现上述方法,本发明提供了一种存储元素的系统,该系统包括计算单元、获取单元、存储单元;获取单元用于获取元素;计算单元用于将获取的元素生成与元素一一对应的索引值;存储单元用于将生成的索引值形成索引值数组并保存。
其中,该系统进一步包括排序单元;排序单元用于将形成的索引值数组排序。
为实现元素查找的方法,本发明提供了一种用于查找元素的系统,该系统包括计算单元、获取单元、存储单元、查找单元;获取单元用于获取元素;计算单元用于将获取的元素生成与元素一一对应的索引值;存储单元用于将生成的索引值形成索引值数组并保存;查找单元用于在索引值数组中查找计算单元生成的某一索引值。
其中,该系统进一步包括排序单元;排序单元用于将形成的索引值数组排序。
由于现有技术中在存储元素本身时,还要存储一个串的长度信息。以英文单词为例,当集合中单词的平均长度为4至5个字符时,存储需要占用8至10个字节,而本发明利用哈希算法将集合中的元素存储成索引值的形式,只需要存储一个整数,即4个字节。因此采用本发明能够将同样内容的东西的存储容量减小为现有技术的二分之一至三分之一。
且当K的取值较好时,能够最大程度的避免哈希算法计算出的关键值出现相同的情况,从而提高查找元素的准确率。
当形成了将元素以索引值存储的索引值数组时,在查找时由于是对整数的比较,而现有技术需要对字符串中的每个字符进行比较,若平均每个字符串有4至5个字符时,运用本发明能够将查找速度提高四至五倍。
综上所述,本发明对比现有技术而言,减少了元素存储时所占用的资源,并且提高了查找时的效率。


图1为本发明一实施例流程图;图2为本发明一实施例流程图;图3为本发明一实施例流程图;图4为本发明一实施例系统图;图5为本发明一实施例系统图;图6为本发明一实施例系统图。
具体实施例方式
本发明要解决的问题是查找效率不高与占用资源大的问题,而通过本发明的方法,将原有的元素通过特殊的方法生成索引值,即有效减少了资源浪费,又提高了查找速度。
为达到上述效果,下面详细介绍本法明的实现过程。
例如某个集合中的所有元素都为英文字符串。由于目前在存储这些英文字符串的同时还需要保存除英文字符串之外的附加信息,但这些附加信息并不是我们真正需要的,因此这些附加信息占用了过多的资源。为此,本发明采用对这些字符串进行转换,通过本发明给出的哈希算法来实现。
参见图1,该图为本发明存储字符串的流程。
步骤100获取集合中的元素,将集合中的一个英文字符串用特定的哈希算法进行计算,得到与该英文字符串一一对应的一个索引值。
所述的特定的哈希算法为假设元素字符串N=N0N1N2......N(M-1);M为字符串N的字符个数;哈希键值=K;通过多次实验数据显示,K取31时的效果相对较好。
索引值I=(((L0*K+L1)*K+L2+......)*K+L(M-1)mod2NL0......L(M-1)为通过预置的哈希表查找出的编码数据,L0......L(M-1)对应于元素的每一个字符;N为预置的索引值的存储位数;若得到索引值为32位的整型数据,那么N就取为32。
步骤101将该索引值保存至一个临时的索引值数组中。
步骤102对集合中所有其他英文字符串都依次执行步骤100、101。
步骤103存储该索引值数组。
下面举个具体的例子对该存储方法中的计算索引值进行详细描述。
以字符串N=hello为例,从预先设定好的哈希表中查找得到其unicode编码是h104;e101;l108;o111;情况1取K=31、N=32;那么I=(((((h*31+e)*31+l)*31+l)*31+o))mod 232=(((((h*31+101)*31+108)*31+108)*31+111))mod 232=99162322(10进制)=d218e905(16进制)下面列举的3组实验数据是基于相同的一个集合,用不同的K值计算出的索引值I的分布情况。
表中的数值分别为在不同的K值时计算得出的索引值I。
表1K=53,分布情况

表2K=31,分布情况

表3K=389,分布情况

由上述表1至表3的实验数据可以看出其他条件相同的情况下,K取不同的值时,索引值I的分布情况不同。
表4不同K值分布情况统计表

表4中的位数指索引值I的位数;个数指索引值I相对于不同位数的个数。通过表4我们可以清楚的看出在K取31时,索引值I的不同位数数值个数相对于其他K值分布较均匀。
以上的步骤中虽然形成了由索引值构成的索引值数组,但是并未对其数值中的元素进行排序,那么当需要对集合中的元素进行索引时,就会对索引的效率产生影响。因为对有序数组的索引效率显然要高于对无序数组的索引效率,因此可以在上述流程的步骤103前,将索引值数值进行排序。
对应于上述方法,本发明还提供了一种用于存储元素的系统,参见图4该系统包括计算单元(01)、获取单元(03)、存储单元(02);获取单元(03)用于获取元素,例如获取的元素为英文字符串等多种形式;计算单元(01)用于将获取的元素生成与元素一一对应的索引值;存储单元(02)用于将生成的索引值形成索引值数组并保存。
参见图2,该流程步骤具体如下。
步骤200获取集合中的元素,将集合中的一个英文字符串用特定的哈希算法进行计算,得到与该英文字符串一一对应的一个索引值。
所述的特定的哈希算法为假设元素字符串N=N0N1N2......N(M-1);M为字符串N的字符个数;哈希键值=K;通过多次实验数据显示,K取31时的效果相对较好,实验数据同上述的基本相同,在此不在累述。
索引值I=(((L0*K+L1)*K+L2+......)*K+L(M-1)mod2NL0......L(M-1)为通过预置的哈希表查找出的编码数据,L0......L(M-1)对应于元素的每一个字符;N为预置的索引值的存储位数;若得到索引值为32位的整型数据,那么N就取为32。
步骤201将该索引值保存至一个临时的索引值数组中。
步骤202对集合中所有其他英文字符串都依次执行步骤200、201。
步骤203对所述的索引值数组进行排序。
步骤204存储该索引值数组。
对应于上述第二种方法,本发明提供了用于存储元素的系统,参见图5该系统包括计算单元(01)、获取单元(03)、存储单元(02)及排序单元(04);获取单元(03)用于获取元素,例如获取的元素为英文字符串等多种形式;计算单元(01)用于将获取的元素生成与元素一一对应的索引值;存储单元(02)用于将生成的索引值形成索引值数组并保存;排序单元(04)用于将形成的索引值数组排序。
以上两个实施例是对元素的存储流程进行描述的,当形成了上述的索引值数组后,可以在索引该数组中的元素时提高索引的速率。
索引的具体步骤参见图3步骤300将已经生成的索引值数组加载到内存中。
步骤301将输入的元素用特定的哈希算法进行计算,得到与所述元素对应的索引值。
此处所述的特定的哈希算法与上述两个实施例的哈希算法相同,在此不再累述。
步骤302在索引值数组中查找该索引值,若找到表示所述的元素在该集合中。
步骤302所述的查找索引值的方法可以为顺序查找法;当索引值数组是有序的情况下可以使用二分法查找等等。
对应于该查找方法,本发明提供了一种用于查找元素的系统,参见图6,该系统包括计算单元(01)、获取单元(03)、存储单元(02)、查找单元(05)及排序单元(04);获取单元(03)用于获取元素;
计算单元(01)用于将获取的元素生成与元素一一对应的索引值;存储单元(02)用于将生成的索引值形成索引值数组并保存;查找单元(05)用于在索引值数组中查找计算单元生成的某一索引值;排序单元(04)用于将形成的索引值数组排序。
以上所述的元素并不限于英文字符串,可以是中文字符、日文字符或韩文字符等多种形式,只要能够应用到特定的哈希算法即可。
以上对本发明所提供的基于即时通讯工具的媒体文件更新提示的方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种存储元素的方法,其特征在于,该方法包括将集合中所有元素运用哈希算法生成与元素一一对应的索引值,组成索引值数组;将索引值数组保存。
2.根据权利要求1所述的存储元素的方法,其特征在于,生成索引值是运用下列特定哈希算法索引值=(((L0*K+L1)*K+L2+......)*K+L(M-1)mod2NK为预置的哈希键值;L0......L(M-1)为通过预置的哈希表查找出的编码数据,L0......L(M-1)对应于元素的每一个字符;N为预置的索引值的存储位数。
3.根据权利要求1所述的存储元素的方法,其特征在于,将保存的索引值数组进行排序。
4.根据权利要求1至3任一所述的存储元素的方法,其特征在于,所述的哈希关键值为两位数或31。
5.一种查找元素的方法,其特征在于,该方法包括将集合中所有元素运用哈希算法生成与元素一一对应的索引值,组成索引值数组;将索引值数组保存;输入要查找的元素,运用哈希算法生成与该元素对应的索引值,在所述的索引值数组中查找该索引值。
6.根据权利要求5所述的查找元素的方法,其特征在于,生成索引值是运用下列特定哈希算法索引值=(((L0*K+L1)*K+L2+......)*K+L(M-1)mod2N;K为预置的哈希键值;L0......L(M-1)为通过预置的哈希表查找出的编码数据,L0......L(M-1)对应于元素的每一个字符;N为预置的索引值的存储位数。
7.根据权利要求4所述的查找元素的方法,其特征在于,将保存的索引值数组进行排序。
8.根据权利要求5至7任一所述的查找元素的方法,其特征在于,所述的哈希关键值为两位数或31。
9.一种存储元素的系统,其特征在于,该系统包括计算单元、获取单元、存储单元;获取单元用于获取元素;计算单元用于将获取的元素生成与元素一一对应的索引值;存储单元用于将生成的索引值形成索引值数组并保存。
10.根据权利要求9所述的存储元素的系统,其特征在于,该系统进一步包括排序单元;排序单元用于将形成的索引值数组排序。
11.一种用于查找元素的系统,其特征在于,该系统包括计算单元、获取单元、存储单元、查找单元;获取单元用于获取元素;计算单元用于将获取的元素生成与元素一一对应的索引值;存储单元用于将生成的索引值形成索引值数组并保存;查找单元用于在索引值数组中查找计算单元生成的某一索引值。
12.根据权利要求11所述的用于查找元素的系统,其特征在于,该系统进一步包括排序单元;排序单元用于将形成的索引值数组排序。
全文摘要
本发明提供了一种存储元素的方法,该方法包括将集合中所有元素运用哈希算法生成与元素一一对应的索引值,组成索引值数组;将索引值数组保存;对应该方法本发明还提供了一种存储元素的系统,该系统包括计算单元、获取单元、存储单元;本发明还提供了一种查找元素的方法,该方法包括将集合中所有元素运用特定哈希算法生成与元素一一对应的索引值,组成索引值数组;将索引值数组保存;输入要查找的元素,运用哈希算法生成与该元素对应的索引值,在所述的索引值数组中查找该索引值,对应查找元素的方法,本发明还提供了一种查找元素的系统,该系统包括计算单元、获取单元、存储单元、查找单元。
文档编号G06F17/30GK1949221SQ20061014412
公开日2007年4月18日 申请日期2006年11月27日 优先权日2006年11月27日
发明者彭锦臻 申请人:北京金山软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1