2011年计算机二级公共基础知识辅导笔记(8)
文章作者 100test 发表时间 2011:03:18 18:47:45
来源 100Test.Com百考试题网
1.8 排序
1. 交换类排序法
(1)冒泡排序法
首先,从表头开始往后扫描线性表,逐次比较相邻两个元素的大小,若前面的元素大于后面的元素,则将它们互换,不断地将两个相邻元素中的大者往后移动,最后最大者到了线性表的最后。
然后,从后到前扫描剩下的线性表,逐次比较相邻两个元素的大小,若后面的元素小于前面的元素,则将它们互换,不断地将两个相邻元素中的小者往前移动,最后最小者到了线性表的最前面。
对剩下的线性表重复上述过程,直到剩下的线性表变空为止,此时已经排好序。
在最坏的情况下,冒泡排序需要比较次数为n(n-1)/2。
(2)快速排序法
任取待排序序列中的某个元素作为基准(一般取第一个元素),通过一次排序,将待排元素分为左右两个子序列,左子序列元素的排序码均小于或等于基准元素的排序码,右子序列的排序码则大于基准元素的排序码,然后分别对两个子序列继续进行排序,直至整个序列有序。
2. 插入类排序法
① 简单插入排序法,最坏情况需要n(n-1)/2次比较;
② 希尔排序法,最坏情况需要O(n1.5)次比较。
3. 选择类排序法
① 简单选择排序法,最坏情况需要n(n-1)/2次比较;
② 堆排序法,最坏情况需要O(nlog2n)次比较。
相比以上几种(除希尔排序法外),堆排序法的时间复杂度最小。
#ff0000>