各种排序算法总结

各种排序算法总结

ID:30793707

大小:682.57 KB

页数:24页

时间:2019-01-03

各种排序算法总结_第1页
各种排序算法总结_第2页
各种排序算法总结_第3页
各种排序算法总结_第4页
各种排序算法总结_第5页
资源描述:

《各种排序算法总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、各种排序算法总结收嚴排序Sorting排序问题的输入是一个线性表,该线性表的元素属于一个偏序集;要求对该线性表的元素做某种重排,使得线性表中除表尾外的每个元素都小于等于(或大于等于)它的后继。设R为非空集合A上的二元关系,如果R满足自反性(对于每一个xGA,(x,X)ER),反对称性((x,y)GRA(y,x)eR-x=y)和传递性((x,y)WR/(y,x)WR-*(x,z)WR),则称R为A上的偏序关系,记作W。如果(x,y)eR,则记作xWy,读作“x小于等于y”。存在偏序关系的集合A称为

2、偏序集。注意,这里的W不是指数的人小,而是指在偏序关系中的顺序性。xWy的含义是:按照这个序,x排在y前面。根据不同的偏序定义,W有不同的解释。例如整除关系是偏序关系W,3W6的含义是3整除6。大于或等于关系也是偏序关系,针对这个关系5W4是指在大于或等于关系中5排在4的前面,也就是说5比4大。在实际应用中,经常遇到的偏序关系是定义在一个记录类型的数据集合上的。在该记录类型中有一个主键域key,key域的类型是某一个偏序集,记录的其他域称为卫星数据。比较线性表中的两个元素L,和Lj的大小,实际上是

3、比较key和Lj.key的大小(这种比较当然也是偏序集中的比较)。举例而言,某公司的数据库里记录了员工的数据,每一项纪录包拾姓名,编号,年龄,工资等儿个域,如果以编号为key域对员工记录排序,则是将员工记录按照编号排序;如果以工资为key域对员工记录排序,则是将员工记录按照工资高低排序;如果以姓名为key域对员工记录排序,则是以员工姓名的汉语拼音按照字典顺序排序。关于偏序集的具体概念和应用,请参见离散数学的相关资料。如果一个排序算法利用输入的线性表在原地重排其屮元素,而没有额外的内存开俏,这种排序

4、算法叫做原地置换排序算法(inplacesort);如果排序后并不改变表中和同的元素原来的和对位置,那么这种排序算法叫做稳定排序算法(stablesort)。排序问题一般分为内排序(internalsorting)和外排序(externalsorting)两类:1.内排序:待排序的表中记录个数较少,整个排序过程中所有的记录都可以保留在内存中;2.外排序:待排序的记录个数足够多,以至于他们必须存储在磁带、磁盘上组成外部文件,排序过程屮需要多次访问外存。排序问题的计算复杂性对排序算法计算时间的分析町以

5、逍循若丁种不同的准则,通常以排序过程所需耍的算法步数作为度屋,有时也以排序过程中所作的键比较次数作为度量。特别是当作一次键比较需要较K时间,例如,当键是较氏的字符出时,常以键比较次数作为排序算法计算时间复杂性的度量。当排序时需要移动记录,且记录都很大时,还应该考虑记录的移动次数。究竟采用哪种度量方法比较合适要根据具体情况而定。在下面的讨论中我们主要考虑川比较的次数作为复杂性的度量。为了对有n个元素的线性衣进行排序,至少必须扫描线性农一遍以获取这n个元素的信息,因此排序问题的辻篡复杂性下界为Q(n)

6、。如果我们对输入的数据不做任何要求,我们所能获得的唯一信息就是各个元素的具体的值,我们仅能通过比较來确定输入序列va“a2,..,an>的元素间次序。即给定两个元素&和ar通过测试as<①,a芒q,at=①,a,>a,中的哪一个成立來确定印和a,间的相对次疗;。这样的排序算法称为比找豁算法。下面我们讨论一下比较排序算法在最坏情况下至少需耍多少次比较,即比较排序算法的最坏情况复杂性下界。我们假设每次比较只测试a芒可,如果a$q成立则q排在可前面,否则q排在q后面。任何一个比较排序算法可以描述为一串比

7、较序列:表示我们首先比较(a”ad,然后比较(a*),…,比较(am,an)....»直到我们获取了足够的信息町以确定所有元索的顺序。显而易见,如果我们对所何的元索两两进行一次比较的话(总共比较了C*次),就一定可以确定所有元索的顺序。但是,如果我们运气足够好的话,我们町能不必对所有元索两两进行一次比较。比如说对于有三个元索a15a2,a3的线性表进行排序,如果我们先比较&和a?,得到玄泾比;然后比较a?和a?,得到a2

8、a3,我们还必须比较內和a?才能确定a"lia3的和对位置。如果我们适当的安排比较的次序的话,也可以减少比较的次数。这样我们可以用一棵二叉树表示比较的顺序,如下图所示:该树的每一个非叶节点表示一次比较,每一根树枝表示一种比较结果,每一个叶节点表示i种排列顺序。这样的一棵二叉树叫做決玻拟它用树枝表示了每次决策做出的选择。如此我们可以将任何一个比较排序算法用一棵决策树來表示。请注意上图只表明了对三个元素的一种比较算法,这种比较算法依次比45(a1,a2)(a2la3)(a1,a3),一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。