[学科竞赛]第十章排序
第十章 排 序 待排序记录的存储方式 1.待排序的一组记录放在地址连续的一组存储单元上,记录间的次序关系由存储位置来决定. 2.待排序的一组记录放在静态链表中.记录之间的次序关系由指针指示.实现排序不需要移动记录,只需要修改指针.(链表排序) 3.待排序的一组记录放在地址连续的一组存储单元上,同时另设一个指示各记录存储位置的地址向量.(地址排序) 直接插入排序过程示例 初始关键字序列 以顺序表作为存储结构的直接插入排序算法 时间复杂度:O(n2) 在最好情况下(正序),元素的移动次数为0,比较次数为n – 1; 在最坏情况下(逆序),元素的移动次数为(n+4)(n-1)/2,比较次数为 (n+2)(n-1)/2 空间复杂度:O(1) 只需要 1 个辅助单元 稳定的排序方法 适用情况 元素数目少,或者元素的初始序列基本有序当待排序的记录个数较多时,大量的比较和移动操作使直接插入排序算法的效率降低。 算法分析: 折半插入排序所需要的关键字比较次数与待排序记录序列的初始排列无关,仅依赖于记录个数。在插入第 i 个记录时,需要经过 ?log2i? +1 次关键字比较,才能确定它应插入的位置。将 n 个记录用折半插入排序所进行的关键字比较次数为O(nlog2n) . 折半插入排序的时间复杂度仍为O(n2) 1. 起泡排序 起泡排序(Bubble Sorting)的基本思想是:将相邻位置的关键字进行比较,若为逆序则交换之。 第i趟排序过程为从L.r[1]至L.r[n-i+1]依次比较相邻两个记录的关键字,并在“逆序”时交换相邻记录,其结果是这n-i+1个记录中关键字最大的记录被交换到第n-i+1的位置上。 整个排序过程终止的条件是“在一趟排序过程中没有进行过交换记录的操作” 起泡排序过程示例 初始关键字序列: 以顺序表作为存储结构的起泡排序算法 起泡排序算法分析 以顺序表作为存储结构的起泡排序算法 时间复杂度:O(n2) 在最好情况下(正序),元素的交换次数为0,比较次数为n – 1; 在最坏情况下(逆序),元素的交换次数为n(n-1)/2,比较次数为 n(n-1)/2 空间复杂度:O(1) 只需要 1 个辅助单元进行交换 稳定的排序方法 适用情况 元素数目少,或者元素的初始序列基本有序 2. 快速排序 快速排序(Quick Sorting)是迄今为止所有内排序算法中速度最快的一种。它的基本思想是:任取待排序序列中的某个元素作为基准(一般取第一个元素),通过一趟排序,将待排元素分为左右两个子序列,左子序列元素的关键字均小于或等于基准元素的关键字,右子序列的关键字则大于基准元素的关键字,然后分别对两个子序列继续进行排序,直至整个序列有序。 算法分析: 从快速排序算法的递归树可知,快速排序的趟数取决于递归树的深度。 如果每次划分对基准记录定位后,该记录的左侧子序列与右侧子序列的长度相同,则下一步将是对两个长度减半的子序列进行排序,这是最理想的情况。 在n个元素的序列中,对一个记录定位所需时间为 O(n)。若设 T(n) 是对 n 个元素的序列进行排序所需的时间,而且每次对一个记录正确定位后,正好把序列划分为长度相等的两个子序列,此时,总的计算时间为: T(n) ? n + 2 T(n/2 ) // 一趟划分比较次数为n-1次 ? n + 2 ( n/2 + 2T(n/4) ) = 2n + 4T(n/4) ? 2n + 4 ( n/4 +2T(n/8) ) = 3n + 8T(n/8) ……… ? n log2n + nT(1) = O(n log2n ) 可以证明,函数quicksort的平均计算时间也是o(nlog2n)。实验结果表明:就平均计算时间而言,快速排序是我们所讨论的所有内排序方法中最好的一个。 最坏的情况下: 即待排序记录序列已经按其关键字从小到大排好序的情况下,其递归树成为单支树,每次划分只得到一个比上一次少一个记录的子序列。这样,必须经过 n-1 趟才能把所有记录定位,而且第 i 趟需要经过 n-i 次关键字比较才能找到第 i 个记录的安放位置,总的关键字比较次数将达到: 其排序速度退化到简单排序的水平,比直接插入排序还慢。 若能更合理地选择基准记录,使得每次划分所得的两个子序列中的记录个数尽可能地接近,可以加速排序速度,但是由于记录的初始排列次序是随机的,这个要求很难办到。 有一种改进办法:取每个待排序记录序列的第一个记录、最后一个记录和位置接近正中的3个记录,取其关键字居中者作为基准记录。 10.4 选择排序 1. 简单选择排序 基本思想: 第一趟在n个记录中选取最小记录作为有序序列的第一个记录,第二趟在n-1个记录中选取最小记录作为有序序列的第二个记录,第i趟
您可能关注的文档
- [学科竞赛]华工MCU与DSP专题五-1.doc
- [学科竞赛]完整小学体育教案小学体育教案体育教案小学教案.pdf
- [学科竞赛]地球的运动.ppt
- [学科竞赛]已用-第二节胶体的性质及其应用.ppt
- [学科竞赛]小学三年级下册奥数题经典拔高版附答案详解.doc
- [学科竞赛]如今家乡山连山_课件.ppt
- [学科竞赛]拂晓中心小学2011—2012学年度第一学期安徽网台文件频道目录.docx
- [学科竞赛]书人教育 2年级 奥数 举一反三.pdf
- [学科竞赛]植物生理学教案---第三章光合作用1.ppt
- [学科竞赛]最值问题.ppt
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测生物试卷+答案.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测语文试卷+答案.doc
- 四川省绵阳南山中学实验学校2025-2026学年高三上学期1月月考数学含答案.doc
- 2026届辽宁省大连市高三上学期双基考试物理试卷+答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测化学含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测生物含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测英语含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测政治含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试化学含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试生物含答案.doc
原创力文档

文档评论(0)