- 4
- 0
- 约1.18万字
- 约 60页
- 2019-01-19 发布于江西
- 举报
第十章 内部排序 10.1 概述 10.2 插入排序 10.3 快速排序 10.4 选择排序 10.5 归并排序 10.6 基数排序 10.7 各种排序方法比较 一、排序(Sorting) 排序:排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。 二、排序基本操作 排序的基本操作包括: 比较:比较两个关键字的大小 移动:将记录从一个位置移动至另一个位置 一、直接插入排序 每步将一个待排序的对象, 按其关键字大小, 插入到前面已经排好序的有序表的适当位置上, 直到对象全部插入为止。 直接插入排序(算法实现) 直接插入排序(算法分析) 关键字比较次数和记录移动次数与记录关键字的初始排列有关。 最好情况下, 排序前记录已按关键字从小到大有序, 每趟只需与前面有序记录序列的最后一个记录比较1次, 移动0次记录, 总的关键字比较次数为 n-1, 记录移动次数为 0。 直接插入排序(算法分析) 在平均情况下的关键字比较次数和记录移动次数约为 n2/4。 直接插入排序的时间复杂度为O(n2)。 直接插入排序是一种稳定的排序方法 直接插入排序最大的优点是简单,在记录数较少时,是比较好的办法 二、折半插入排序 折半插入排序在查找记录插入位置时,采用折半查找算法 折半查找比顺序查找快, 所以折半插入排序在查找上性能比直接插入排序好 但需要移动的记录数目与直接插入排序相同(为O(n2)) 折半插入排序的时间复杂度为O(n2)。 折半插入排序是一种稳定的排序方法 三、希尔排序 从直接插入排序可以看出,当待排序列为正序时,时间复杂度为O(n) 若待排序列基本有序时,插入排序效率会提高 希尔排序方法是先将待排序列分成若干子序列分别进行插入排序,待整个序列基本有序时,再对全体记录进行一次直接插入排序 希尔排序又称为缩小增量排序。 希尔排序(算法) 首先取一个整数 gap n(待排序记录数) 作为间隔, 将全部记录分为 gap 个子序列, 所有距离为 gap 的记录放在同一个子序列中 在每一个子序列中分别施行直接插入排序。 然后缩小间隔 gap, 例如取 gap = gap/2 重复上述的子序列划分和排序工作,直到最后取gap = 1, 将所有记录放在同一个序列中排序为止。 希尔排序(举例) 例:已知待序的一组记录的初始排列为:21, 25, 49, 25*, 16, 08 希尔排序(算法分析) 开始时 gap 的值较大, 子序列中的记录较少, 排序速度较快 随着排序进展, gap 值逐渐变小, 子序列中记录个数逐渐变多,由于前面大多数记录已基本有序, 所以排序速度仍然很快。 Gap的取法有多种。 shell 提出取 gap = ?n/2?,gap = ?gap/2?,直到gap = 1。 希尔排序(算法分析) 对特定的待排序记录序列,可以准确地估算关键字的比较次数和记录移动次数。 希尔排序所需的比较次数和移动次数约为n 1.3 当n趋于无穷时可减少到n x(log2 n)2 希尔排序的时间复杂度约为O(n x(log2 n)2) 希尔排序是一种不稳定的排序方法 一、起泡排序 设待排序记录序列中的记录个数为n。 起泡排序(举例) void BubbleSort(SqList L) { // 对顺序表L作起泡排序 for (i=L.length, change=TRUE; i1 change; --i) { change = FALSE; for (j=1; ji; ++j) if (L.r[j].key L.r[j+1].key) { L.r[j]←→L.r[j+1]; change = TRUE } }// for i } // BubbleSort 起泡排序(性能分析) 最好情况:在记录的初始排列已经按关键字从小到大排好序时,此算法只执行一趟起泡,做n-1次关键字比较,不移动记录 二、快速排序 任取待排序记录序列中的某个记录(例如取第一个记录)作为基准(枢),按照该记录的关键字大小,将整个记录序列划分为左右两个子序列: 左侧子序列中所有记录的关键字都小于或等于基准记录的关键字;右侧子序列中所有记录的关键字都大于基准记录的关键字。 快速排序(算法) 一趟排序(某个子序列)过程 ①从high指向的记录开始,向前找到第一个关键字的值小于Pivotkey的记录,将其放到low指向的位置,low+1 ②从low指向的记录开始,向后找到第一个关键字的值大于Pivotkey的记录,将其放到high指向的位置,high-1 重复①, ②,直到low=high,将枢轴记录放在low(high)指向的位置。 快速排序(举例) 取序列第一个记录为枢轴记
您可能关注的文档
最近下载
- 支部党员大会会议记录(支委会选举范例).docx VIP
- 深圳市宝安区2025-2026学年第一学期五年级语文期末学业质量评估卷(原卷+答案)统编版.docx VIP
- 山桐子种植加工、旅游项目可行性研究报告商业计划书.docx VIP
- 山桐子种植及种苗培育种植加工可行性研究报告申请备案.doc VIP
- 和田地区2026年度地直机关公开遴选公务员、事业单位公开选聘工作人员备考题库及完整答案详解1套.docx VIP
- 山桐子合作种植协议合同.docx VIP
- 2025年香氛未来趋势报告-英敏特.docx VIP
- 报告正文2014年太阳绿宝.pdf VIP
- 2025年高考:云南物理--试题及答案.pdf VIP
- 广东省深圳市宝安区2025-2026学年五年级上学期期末学业质量评估语文试卷.docx VIP
原创力文档

文档评论(0)