常用排序算法总结.docx
《常用排序算法总结.docx》由会员分享,可在线阅读,更多相关《常用排序算法总结.docx(15页珍藏版)》请在第一文库网上搜索。
1、常用排序算法总结()Postedon2016-03-2822:13SteveWang阅读(.)坪论()编轼收藏目录冒泡排序鸡尾酒排序选择排序插入排序二分插入排序希尔排序 也井排序 堆排序 快速排序我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。排序算法大体可分为两种:一种是比较排序,时间复杂度O(n1ogn)O(M2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。另一种是非比较排序,时间复杂度可以达到0(n),主要有:计数排序,基数排序,桶排序等。这里我们来探讨一下常用的比较排序算法,非比较排序算法将在后续文章中介绍。下表给出了常见比较排序算法
2、的性能:表9-10-1排序方法平均情况好情况Qk坏情况辅助空间稳定性胃泡排序O()OS)O()0(1)稳定简单选择排序O()0(/?)O()。京定直接插入排序O(J)0(0)O()O(I)稳定希尔排序O(HiOg)0(,)Os1J)0(/)0(1)不稳定堆排序O(1og)O(1og)O(1og)O(I)不稳定归并排序O(1og)O(1og)O(1ogn)O(H)稳定快速排序O(j1g7)O(1og)O()O(Iogn)O()不稔定这里有一点我们很容易忽略的是排序算法的稳定性(腾讯校招2016笔试题曾考过)。排序算法稳定性的简单形式化定义为:如果Ai=Aj,排序前Aj在AJ之前,排序后Ai还在A
3、j之前,则称这种排序算法是稳定的。通俗地讲就是保证排序前后两个相等的数的相对顺序不变。对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;而对于稳定的排序算法,必须对算法进行分析从而得到稳定的特性。需要注意的是,排序算法是否为稳定的是由具体算法决定的,不稳定的算法在某种条件下可以变为稳定的算法,而稳定的算法在某种条件下也可以变为不稳定的算法。例如,对于冒泡排序,原本是稳定的排序算法,如果将记录交换的条件改成Ai=Ai+1,则两个相等的记录就会交换位置,从而变成不稳定的排序算法。其次,说一下排阳定性的好处.排序法如果是初定的,那么从一个健上排序.然后从另一个上捧厚,第一个挪朦的嫌果可以
4、为第二个It排序所用.数排序就是这样,先按低位排序.逐次按位排停,低位序后元素的顺序在高位也相同时是不会改变的.看泡排序(BUbb1eSort)胃渔排片是一料限1其筒草的排序亶法,也是我所学的第T播序IE去.它B1度地走访过妾排序的元素.一次比较相邻两个元.如果他们的K呼哂就把他们调换过来,到没有元素再需要交换,排序完成.这个算法的名字由来是因为越小(或理大的元案会转由交浮到载列的顶.圄泡排序I1法的运作如下:1比较相郛的元素,如里前一个比后一个大,就!巴它们两个四换位胃.2.对翻一对相邻元嘉作两棒的工作,从开始II-讨理8*后一对.退步也先后,后的元嘉会是量大的效.3针对所有的元素一以上的步
5、舞,除了6T.4持续每次对越来越少的元东重艘上面的步H,酸股有任何一对数字需要比较.由于它的洁,冒泡排序通常被用来对于程序设计入门的学生介绍首法的微念.J泡琲序的代码如下:Itnc1urie分畀内比枚ItFF/*靖树am/aMff1tt*断鬲戢2间0(|)anosvoidMChaF“ctA1hIati,Ifttj)t*A1)RUk(j(1ott4MifA1I1-AIJ1IA(j-tf;IfttM1ftOtIntA1,5.3.1.9,7,2.4H从小-大Ir第序Int-a1zof(A)/S1MOf(Int)forintjOxjnUj)/M次大兀*就像气泡一椁押”到CUM的版Ifor(inti-O
6、iAHH)/taiafortreturnOi上述代码对序删6.5,3.18.7.2.4迸行圆泡探序的实现过程如下53167824使用日海排序为一列数字迸行排序的过程如右8B所示:尽管国海俳*是最容易了IPa实现的排序翼法之一,但它对于少数元索之外的数列排序是很没有效率的.泡排序的改进:两港排序玛是港排序,七山建向日海排事,是冒泡撑序的一脚改迸.此!好去与留海排序的不尚处在于从低*I1然后从离到低,而倒泡琲第M仅从低到高去比较序列里的零个元I1他可以得到比国泡掾序!削tt好一点的效畿.玛是酒排序的代码如下:inc1t*i/分矣内也比较樟小at蜷府am星时间复余及-0(n*21序列盘-JHft已性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常用 排序 算法 总结