- 1
- 0
- 约2.41千字
- 约 88页
- 2021-09-22 发布于浙江
- 举报
目 录; 排序(sorting);需确定1,2,…,n的一种排列p1,p2,…,pn,使其相应
的关键字满足如下的非递减(或非递增)关系
Kp1? Kp2 ? … ? Kpn
即使序列(※)成为一个按关键字有序的序列
{ Rp1,Rp2,…,Rpn}
这种操作过程称为排序。;基本概念;2. 排序方法分类;排序方法分类;3. 基本操作;4. 存储结构; 5. 排序方法分析;1. 直接插入排序 (Straight Insertion Sort); 算法的基本思路; 算法10.1; 例子;时间复杂性分析; 直接插入排序;2. 其它插入排序;;;;;3. 希尔排序 (Shell’s Sort);例,初始关键字序列为:
43 41 33 67 74 23 37 33 47 35; 23 37 33 47 35 43 41 33 67 74; 10.3 交换排序; 基本思想; 一般地,第 i 趟冒泡排序是从 r[1]到 r[n-i+1]依次比较相邻两个记录的关键字,并在“逆序”时交换相邻记录,其结果是这n-i+1个记录中关键字最大的记录被交换到第n-i+1 的位置上。整个排序过程需进行k(1? k n)趟冒泡排序。;49
38
65
97
76
13
27
49
初始关键字;冒泡排序的算法;2. 快速排序(Quick Sort); 具体做法; 举例;2次 35 41 33 43 74 23 37 33 47 67
↑ ↑
i j ;5次 35 41 33 33 37 23 43 74 47 67
↑ ↑ ← ↑
i j j;快速排序的算法;; 算法分析;;;; 基本思想;简单选择排序
(Simple Selection Sort); 算法;简单选择排序; 算法分析;;2.锦标赛排序 (Tournament Tree Sort) 树形选择排序(Tree Selection Sort);锦标赛排序构成的树是满的完全二叉树,其深度为 ?log2(n+1)?,其中 n 为待排序元素个数。
除第一次选择具有最小关键字的对象需要进行 n-1 次关键字比较外,重构胜者树选择具有次小、再次小关键字对象所需的关键字比较次数均为 O(log2n)。总关键字比较次数为O(nlog2n)。
对象的移动次数不超过关键字的比较次数,所以锦标赛排??总的时间复杂度为O(nlog2n)。
这种排序方法虽然减少了许多排序时间,但是使用了较多的附加存储。; 胜者树的概念;; 堆的定义;堆排序;堆排序;建堆; 输出堆顶元素,用最后一个元素代替之,然后调整剩余元素
成为一个新的堆; 练习; 最大堆的向下调整算法; 基于初始堆进行堆排序;; 算法分析;;10.5 归并排序;归并排序;;;;在归并排序算法中,递归深度为O(log2n),对象关键字的比较次数为O(nlog2n)。算法总的时间复杂度为O(nlog2n)。
归并排序占用附加存储较多,需要另外一个与原待排序对象数组同样大小的辅助数组。这是这个算法的缺点。
归并排序是一个稳定的排序方法。;10.6 基数排序;以扑克牌排序为例。每张扑克牌有两个“关键字”:花色和面值。其有序关系为:
花色:? ? ? ? ? ? ?
面值:2 3 4 5 6 7 8
原创力文档

文档评论(0)