【技术实现步骤摘要】
技术介绍
在计算机系统中阵列是常见的、有用的、和重要的用来存储和处理数据的数据结构。阵列是在同一名称下组合的一组连续的内存位置,其中每个单独的位置经由其索引或下标访问。在计算机科学中,阵列通常用于实现静态查找表以保存具有相同数据类型的多个值。对阵列进行排序可用于以有序的形式组织数据和迅速获得这些数据。排序的阵列中的元素使用以O(log n)表示的二分搜索来查找;因此,排序的阵列适用于需要能够快速查找元素的情况。查找的复杂度与自平衡二叉搜索树的复杂度相同。然而,已知在排序的阵列中插入和删除元素是成本高的。在排序的阵列中插入和删除元素以O(n)执行。这是因为需要对待插入或待删除的元素以后的所有元素进行移动。相比之下,自平衡二叉搜索树以O(log n)进行插入和删除。例如,当建立含有n个元素的新的排序的阵列时,用于将所有n个元素一个接一个插入到阵列中的成本为O(n2)。当n大时,成本非常高且使得常规阵列无法用于存储排序的数据元素。然而,阵列是简单的且具有良好的局部引用性。在现代计算机系统中,阵列能利用高速缓存存储器来发挥其高性能。
技术实现思路
本公开提供了用于创建和使用排序的阵列的计算机系统和方法,该排序的阵列被快速搜索且也快速形成和更新。在本专利技术的计算机系统和方法中实现的新的数据结构被称为“排序的弹性阵列”(SEA)。SEA分配比实际存储的元素更多的阵列单元,但并不包含如在二叉搜索树或多路 ...
【技术保护点】
一种在阵列中插入输入数据元素的方法,包括:a)计算机处理器将阵列加载到计算机可读存储器中,其中所述阵列的大小为B,用于存储最多B个数据元素,其中,所述阵列包含T个数据元素,其中所述数据元素在所述阵列中被排序,使得所述阵列中的任何不是空的位置包含的数据元素比所有存储在左侧的位置中的数据元素大,且比所有存储在右侧的位置中的数据元素小;b)在所述阵列中确定小于所述输入数据元素的所有数据元素中最大的第一数据元素、和大于所述输入数据元素的所有数据元素中最小的第二数据元素,其中,所述第一数据元素和所述第二数据元素彼此相邻或者被所述第一数据元素和所述第二数据元素之间的一个或多个空位置分隔;以及c)i)如果所述第一数据元素和所述第二数据元素处于相邻的位置,则将所述第一数据元素和所有左侧相邻的数据元素向左侧移动一个位置,然后将所述输入数据元素放置到所述第一数据元素空出的位置中,或者将所述第二数据元素和所有右侧相邻的数据元素向右侧移动一个位置,然后将所述输入数据元素放置到所述第二数据元素空出的位置中,或者ii)将所述输入数据元素放置到所述第一数据元素和所述第二数据元素之间的位置中。
【技术特征摘要】
2013.12.16 US 14/107,8631.一种在阵列中插入输入数据元素的方法,包括:
a)计算机处理器将阵列加载到计算机可读存储器中,其中所述阵列的大小
为B,用于存储最多B个数据元素,其中,所述阵列包含T个数据元素,其中
所述数据元素在所述阵列中被排序,使得所述阵列中的任何不是空的位置包含
的数据元素比所有存储在左侧的位置中的数据元素大,且比所有存储在右侧的
位置中的数据元素小;
b)在所述阵列中确定小于所述输入数据元素的所有数据元素中最大的第一
数据元素、和大于所述输入数据元素的所有数据元素中最小的第二数据元素,
其中,所述第一数据元素和所述第二数据元素彼此相邻或者被所述第一数据元
素和所述第二数据元素之间的一个或多个空位置分隔;以及
c)i)如果所述第一数据元素和所述第二数据元素处于相邻的位置,则将所
述第一数据元素和所有左侧相邻的数据元素向左侧移动一个位置,然后将所述
输入数据元素放置到所述第一数据元素空出的位置中,或者将所述第二数据元
素和所有右侧相邻的数据元素向右侧移动一个位置,然后将所述输入数据元素
放置到所述第二数据元素空出的位置中,或者
ii)将所述输入数据元素放置到所述第一数据元素和所述第二数据元素之
间的位置中。
2.根据权利要求1所述的方法,其中,B至少比T大20%。
3.根据权利要求1所述的方法,其中,所述第一数据元素和所述第二数据
元素被至少三个空位置分隔,且所述输入数据元素被放置到所述空位置中的中
间位置中。
4.根据权利要求1所述的方法,其中,当比值f=T/B大于预定的阈值时,
通过将用于L-B个附加位置的内存分配给所述阵列来将所述阵列的大小扩大
至L。
5.根据权利要求4所述的方法,其中,所述预定的阈值在0.5和0.9之间。
6.根据权利要求4所述的方法,其中,移动所述阵列中的一个或多个数据
元素,使得所述述阵列中的空位置分布得更均匀。
7.根据权利要求1所述的方法,其中,针对一个或多个新的输入数据元素
重复步骤b)和步骤c)。
8.根据权利要求7所述的方法,其中,针对不同的输入数据元素,步骤i)
和步骤ii)都被执行。
9.根据权利要求1所述的方法,其中,在第二索引阵列的位置p插入值i,
其中p是所述输入数据元素的散列函数输出,i是所述输入数据元素在所述阵列
中的位置。
10.根据权利要求9所述的方法,其中,所述阵列和所述第二索引阵列的
长度相同。
11.根据权利要求9所述的...
【专利技术属性】
技术研发人员:乔纳森·战军·岳,
申请(专利权)人:速锐科技有限公司,
类型:发明
国别省市:美国;US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。