哈希表
ISSN1009-3044E-maihxsjl@ccce.net.CrlCompuferKnowledgeandTechnology电奠知识与技术http://www.dnzs.net.cnV01.6.No.4,February2010.PP.859—860Tel:+86..551.—56909635690964一种基于哈希链表的多关键字排序算法
董万归
(大理学院数学与计算机学院,云南大理671003)
摘要:该文结合哈希表提出一种多关键字的排序算法,该算法根据数据元素的关键字转换,利用哈希表的地址映射实现数据元素在有序序列中的位置。从而通过减少关键字比较及移动使排序算法得到优化。算法基于哈希表改进而来,在特殊多关键字排序中具有一定的应用。
关键词:排序;哈希链表;关键字;算法设计
中图分类号:TP301文献标识码:A文章编号:1009—3044(2010)04-0859-02
ASortAlgorithmofManyKeywordsBasedonHashTable
DONGWan—gui
(MathematicsandComputerCollege,DaliCoHege,Dali671003,China)
Abstract:ThispaperpresentsaSortAlgorithmofmanykeyword.sbasedonhashtable,Thealgorithmbasedondataelementsofthekey—wordconversion,Hashtableusingtheaddressmappingdataelementsinanorderlysequenceoflocations,TherebyreducingthekeywordcomparisonandsortingalgorithmSOthatthemobileoptimized.Algorithmbasedonthehashtabletoimprovefrom,fnspecificmanykey—wordsinacertainsortofapplication.
Keywords:sort;hashtable;multiplekeywords;algorithmdesign
排序,就是要将一个序列R。,R:,.一,R。使之按关键字K。,K2。…,K。递增(或递减)排列起来,使得结果序列Rd,R。,…,R。中满足K。。≤k≤…≤K。。(或K。。≥K&≥…≥K0川。排序是程序设计中一种基本常用的操作,在实际程序设计中应用非常广泛,因此排序算法的好坏直接影响到程序的执行操作,进而影响到数据库的执行效率。在其它很多问题巾,排序都是作为其中的一个基本过程,排序算法的好坏直接影响到熬个问题解决的效率。当前,排序算法种类繁多,但就其排序时所遵循的原则而言,大致可分为五大类:插人排序、交换排序、选择排序、归并排序和基数排序。算法性能的好坏则主要是从时间复杂度、空问复杂度和稳定性i个方面考虑Ⅲ。这些传统的排序方法大部分都是基于关键字的比较和序列元素的交换操作来实现,然而,对于一些实际应用中需要处理的数据却要求对多关键字进行排序,所以征对多关键字特定数据经过转换后的特定排序算法可以大大提高数据处理的速度。本文所描述的排序算法就是根据数据元素的关键字转换,利用哈希链表的地址映射实现数据元素枉有序序列中的位置,从而通过减少关键字比较及移动使排序算法得到优化。
l算法描述
算法是基于多关键字转换及哈希链表来实现的,其基本思想是:根据多关键字的特点将其转换为单关键字,并将原始序列当成哈希链表闭:然后,对原始哈希链表进行一遍扫描根据转换过程中的哈希位置确定数据元素在哈希链表中的位置。假设待排数据元素有N个,数据元素的关键字比较有M个其排序优先级为K。>K2>…>KM,K。…K。的范围为Lc"lJm。对于数据的存储可以定义如下结构来实现:
typedefstm('t
{
Elemtypekl,k2,…,km;/*m个关键字定义4/
inttirol;/*m个关键字对应的权值定义}/
intl【m1;/*m个关键字的范围定义4,
…/半其它信息定义t/
Longnodeposition;/木存放转换后的哈希位置+/
NodeType+prior,*next;
lNodeType;
NodeTypeHead,data;
具体算法描述如下:
第一步:将原始数据序列存放到以Head为链表头的哈希链表中j在放人的过程中对任意一个元素i利用公式k=data.d1]4data.1121"data.113]*…*data.1【m】+data.r[21*data.1131"data。114]*…¥data.1【m】 …… 此处隐藏:2426字,全部文档内容请下载后查看。喜欢就下载吧 ……