第9章排序 ★排序定义—将一个数据元素(或记录)的任意 序列,重新排列成一个按关键字有序的序列叫 ★排序分类 ◆按待排序记录所在位置 内部排序:待排序记录存放在内存 外部排序:排序过程中需对外存进行访问的排序 今按排序依据原则 ●插入排序:直接插入排序、折半插入排序、希尔排序 ●交换排序:冒泡排序、快速排序 ●选择排序:简单选择排序、堆排序 ●归并排序:2路归并排序 ●基数排序
第9章 排序 排序定义——将一个数据元素(或记录)的任意 序列,重新排列成一个按关键字有序的序列叫~ 排序分类 ❖按待排序记录所在位置 ⚫内部排序:待排序记录存放在内存 ⚫外部排序:排序过程中需对外存进行访问的排序 ❖按排序依据原则 ⚫插入排序:直接插入排序、折半插入排序、希尔排序 ⚫交换排序:冒泡排序、快速排序 ⚫选择排序:简单选择排序、堆排序 ⚫归并排序:2-路归并排序 ⚫基数排序
今按排序所需工作量 ●简单的排序方法:T(n)=O(n2) ●先进的排序方法:T(n)=O(ogn) ●基数排序:T(n)=O(dn) ★排序基本操作 今比较两个关键字大小 今将记录从一个位置移动到另一个位置
❖按排序所需工作量 ⚫简单的排序方法:T(n)=O(n²) ⚫先进的排序方法:T(n)=O(logn) ⚫ 基数排序:T(n)=O(d.n) 排序基本操作 ❖比较两个关键字大小 ❖将记录从一个位置移动到另一个位置
§9.1交换排序 ★冒泡排序 今排序过程 将第一个记录的关键字与第二个记录的关键字进行比较,若 为逆序[1key>[2]key,则交换;然后比较第二个记录与第 个记录;依次类推,直至第n1个记录和第n个记录比较为 止——第一趟冒泡排序,结果关键字最大的记录被安置在最 后一个记录上 ●对前η-1个记录进行第二趟冒泡排序,结果使关键字次大的记 录被安置在第n∩-1个记录位置 ●重复上述过程,直到“在一趟排序过程中没有进行过交换记 录的操作”为止
§9.1 交换排序 冒泡排序 ❖排序过程 ⚫将第一个记录的关键字与第二个记录的关键字进行比较,若 为逆序r[1].key>r[2].key,则交换;然后比较第二个记录与第 三个记录;依次类推,直至第n-1个记录和第n个记录比较为 止——第一趟冒泡排序,结果关键字最大的记录被安置在最 后一个记录上 ⚫对前n-1个记录进行第二趟冒泡排序,结果使关键字次大的记 录被安置在第n-1个记录位置 ⚫重复上述过程,直到“在一趟排序过程中没有进行过交换记 录的操作”为止
例38383838131313 49494913272727 6565 2730 3030 76 132730 38 38 13 273049 49 U 30 27 3065 3065 3076 3076 97 第第第第 初始关键字 儿u 第五趟一 第六趟
例 49 38 65 97 76 13 27 30初始关键字 38 49 65 76 13 27 30 97第一趟 38 49 65 13 27 30 76第二趟 38 49 13 27 30 65第三趟 38 13 27 30 49第四趟 13 27 30 38第五趟 13 27 30第六趟 38 49 76 9713 972 9730 97 13 76 76 7627 30 13 6527 6530 65 13 13 49 4930 4927 3827 380 38
今算法描述 Ch8 txt 今算法评价 ●时间复杂度 ◆最好情况(正序) 比较次数:n-1 移动次数:0 ◆最坏情况(逆序) 比较次数:(n-)=1(m2-n) 移动次数:3(n-0)=3(m2-n) T(n)=O(n2) Ch8 4.c
❖算法描述 ❖算法评价 ⚫时间复杂度 ◆最好情况(正序) 比较次数:n-1 移动次数:0 ◆最坏情况(逆序) 比较次数: ( ) 2 1 ( ) 2 1 1 n i n n n i − = − − = 移动次数: ( ) 2 3 3 ( ) 2 1 n i n n n i − = − = T(n)=O(n²) Ch8_4.c