当前位置: 首页 > 专利查询>陈启星专利>正文

分级定位排序和分级定位查找的动态查找表的算法制造技术

技术编号:2863727 阅读:135 留言:0更新日期:2012-04-11 18:40
一种分级定位排序和分级定位查找的动态查找表的算法,其特征是:将待排序数的分布范围或查找表的分布范围划分为多个级别,用一个作为分级变量的数组来表示这些级别,每个级别的大小对应着一个分级变量数组元素的下标值,当取出一个待处理数(即待排序数或待查找数)时,用一个变换关系得到该待处理数与上述数组元素的下标值的对应关系,使该待处理数直接进入它所对应的级别,然后用一个静态数组链表将数据进行定位排序,形成分级定位动态查找表d(T)。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】
一种计算机对数据进行排序和进行查找的算法。目前时间复杂度较好的算法有快速排序、堆排序、希尔排序、归并排序等,除希尔排序外,其它几种都是借助“比较”进行排序的算法,根据斯特林公式,有[log2(nl)]=O(nlogn),上述结论从数量级上告诉我们,借助“比较”进行排序的算法在最坏情况下能达到的最好时间复杂度为O(nlogn)。基数排序不是借助“比较”进行排序的算法,时间复杂度为O(d*n),其中d为关键字从最高位到最低位的位数。这就是说,以上都是多趟排序。而且前三种是不稳定排序。目前还没有好的动态查找表算法。有没有一种理想化的排序方法呢?对于完全无序的n个数进行排序,理想化的方法应该是每取出一个数,可以通过计算直接找到其所应该排在的位置,当n个数全部经过一趟计算后,全部找到其所应该排在的位置,这样就完成了排序。显然,理想化排序应该只要进行一趟排序即可完成排序,这大概不可能。本专利技术的目的是提供一种分级定位排序和查找的动态查找表的算法,该算法可以实现以下功能1、只需一趟或少数趟即可完成稳定的分级定位排序,从而建立一个有序且分级的动态查找表;2、在此基础上,可以实现分级定位的动态查找,其本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种分级定位排序和分级定位查找的动态查找表的算法,其特征是将待排序数的分布范围或查找表的分布范围划分为多个级别,用一个作为分级变量的数组来表示这些级别,每个级别的大小对应着一个分级变量数组元素的下标值,当取出一个待处理数(即待排序数或待查找数)时,用一个变换关系得到该待处理数与上述数组元素的下标值的对应关系,使该待处理数直接进入它所对应的级别,然后用一个静态数组链表将数据进行定位排序,形成分级定位动态查找表d(T)。2.根据权利要求1所述的分级定位的排序和查找的方法,其进一步的特征是将排序分为分级排序阶段和定位排序阶段,所谓分级排序是,建立一个数组b(R)作为分级排序的头指针,b(R)中的每个元素引导一个等级,当待排序数经过计算后,直接分配其所应该归属的分级变量b(r),就完成了按级别大小的分级排序,b(r)引导的数据采用动态数据结构(包括链表、动态数组、动态的堆栈和队列)。3.根据权利要求1所述的算法,其进一步的特征是定位排序时分级内排序和数据收集两步,第一步是级内排序,级内排序可以采用传统的排序方法(归并、冒泡、快速),如果某级数据量很大,可以再使用分级排序进一步分级;第二步是数据收集,用一个静态数组链表d(T)对已经完成级内排序的数据进行收集,;各个级别(r)在表d(T)中的起始位置h(r)由h(r)=Σi=1r+1k(r-i)]]>计算得出。4.根据权利要求1所述的算法,其进一步的特征是对分级定位排序形成的d(T),进行数据插入时的算法包括逐个插入法(见实施例6、7)和集团插入法(见实施例8、9、10、11、12),如果是逐个插入法,则根据待插入结点da(ta)↑.c1的值从大至小的顺序,依次对每个da(ta)进行查找和插入;如果是集团插入法,则顺从d(t)的正序,将da(Ta)中全部应该插入在某插头后面的若干个结点一次性集团插入,以保证da(ta)插入d(T)后形成的新表仍然有序。对于待插入序列Xa(Ja),如果要有序地插入主表d(T)中,其算法有以下步骤①将待插入序列Xa(Ja)也进行分级定位排序(同d(T)算法相同),产生的(待插入)副表da(Ta)也为静态数组链表(ta=0,1,…,na),级内计数器为ka(r)。②如果是逐个插入法(见实施例6、7),则根据待插入结点da(ta)↑.c1的值从大至小的顺序,依次对每个da(ta)进行查找和插入,(为节省版面,以后用‖表示换行)算法(先查找确定 然后),da(ta)↑.link=d(t)↑.link;‖d(t)↑.link=da(ta),以保证da(ta)插入d(T)后形成的新表d1(T1)仍然有序;如果是集团插入法(见实施例8、9、10、11、12),则顺从d(t)的正序,将da(Ta)中全部应该插入在某插头后面的若干个结点一次性集团插入,以保证da(ta)插入d(T)后形成的新表d1(T1)仍然有序。③首先是通过分级定位查找(也可以类折半查找)确定插头d(t),然后将da(Ta)中符合条件的部分结点插入d(t)后面,逐批将da(ta)全部链结到d(T)...

【专利技术属性】
技术研发人员:陈启星
申请(专利权)人:陈启星
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利