第9章 排序计科系 王丹丹主要内容排序的基本概念与分类冒泡排序简单选择排序直接插入排序希尔排序堆排序归并排序快速排序9.2 排序的基本概念与分类?排序的定义 假设含有n个记录的序列为{, ,…, },其对应的关键字分别为{, ,…, },需确定1,2,…,n的一种排序, ,…, ,使其相应的关键字满足≤ ≤…… ≤ 非递减(或非递增)关系,即使得序列称为一个按关键字有序的序列{, ,…, },这样的操作称为排序。 简言之:排序的功能是将一个数据元素(记录)的任意序列,重新排列成一个关键字有序的序列。9.2.1 排序的稳定性? 假设(1≤i≤n,1≤j≤n,i≠j),且在排序前的序列中领先于即(ij)。如果排序后仍领先于,则称所用的排序方法是稳定的;反之,若可能使得排序后的序列中领先于,则称所用的排序方法是不稳定的。例:2716931724179Data稳定性排序:Data79916172427317991617242731不稳定性排序:Data9.2.2 内排序与外排序按待排序记录所在位置分类内排序:待排序的所有记录全部被放置在内存中。外排序:排序过程需要对外存进行访问的排序。影响内排序性能的因素时间性能衡量其好坏的最重要的标志。高效率的排序算法应是尽可能少的关键字比较次数和记录移动次数。衡量的主要标准。辅助空间是除了存放待排序所占用的存储空间之外,执行算法所需要的其他存储空间。辅助空间算法本身的复杂性。算法复杂性直接插入排序、希尔排序插入排序冒泡排序、快速排序交换排序直接选择排序、堆排序选择排序2-路归并排序归并排序多关键字排序基数排序按排序依据原则分类9.2.3 排序用到的结构与函数排序的基本操作排序用顺序表结构将记录从一个位置移动到另一个位置比较两个关键字#define MAXSIZE 10//用于要排序数组个数最大值typedef struct{ int r[MAXSIZE+1]; //用于存储要排序数组 //r[0]用作哨兵或临时变量 int length;}SqList;数组两元素的交换函数/*交换L中数组r的下标i和j的值*/void swap(SqList *L, int i, int j){ int temp = L-r[i]; L-r[i] = L-r[j]; L-r[j] = temp;}9.3 冒泡排序冒泡排序(Bubble Sort)的基本思想 两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。冒泡排序的实现步骤将第一个记录的关键字与第二个记录的关键字进行比较,若为反序L-r[1]L-r[2],则交换;比较第二个记录与第三个记录;依次类推,直至第n-1个记录和第n个记录比较为止——第一趟冒泡排序。对前n-1个记录进行第二趟冒泡排序,使关键字次大的记录被安置在第n-1个记录位置。重复上述过程,直到“在一趟排序过程中没有进行过交换记录的操作”为止。9.3.1 最简单排序实现/*对顺序表L作交换排序(冒泡排序初级版)*/void BubbleSort0(SqList *L){ int i, j; for (i = 1; i L-length; i++) { for (j = i + 1; j =L-length; j++) { if (L-r[i]L-r[j]) { swap(L, i, j);//交换L-r[i]与L-r[j]的值 } } }}9.3.2 冒泡排序算法/*对顺序表L作冒泡排序*/void BubbleSort(SqList *L){ int i, j; for (i = 1; i L-length; i++) { for (j = L-length-1; j = i; j--) { if (L-r[j]L-r[j+1]) { swap(L, j, j+1); //交换L-r[j]与L-r[j+1]的值 } } }}与上一算法的差异:注意j是从后往前循环。9.3.3 冒泡排序优化 如果待排序的序列是{2,1,3,4,5,6,7,8,9},即除了第一和第二的关键字需要交换外,别的都已经是正常的顺序,但仍然将i=2到9以及每个循环中的j都执行一遍。 尽管并没有交换数据,但是之后的大量比较还是大大地多余了。冒泡程序是否还可以优化呢?9.3.3 冒泡排序优化/*对顺序表L改进冒泡算法*/void BubbleSort2(SqList *L){ int i, j; Status flag = TRUE; //flag用来作为标记 for (i = 1; i L-length flag; i++) //若flag为true则退出循环 { flag = FALSE; //初始为false for (j = L-length - 1; j = i; j--) { if (
您可能关注的文档
最近下载
- 珠海市金湾区面向2026年应届毕业生及社会人员公开招聘中小学编制内教师备考题库带答案详解.docx VIP
- 药物临床试验质量管理规范 .pdf VIP
- 《培养良好习惯主题班会》课件.ppt
- 四川省成都七中2025—2026学年度上学期期末考试高一英语试卷(含答案,含听力原文及音频).pdf VIP
- 近五年陕西中考数学真题及答案2024.docx VIP
- 初中数学新沪科版七年级下册全册教学反思(2025春).pdf VIP
- 广东省2025年中考历史试题(含答案).pdf VIP
- 2026春《开学第一课》PPT课件.pptx
- 学堂在线 雨课堂 学堂云 人工智能与创业智慧 章节测试答案.docx VIP
- 《心理学概论》教案.doc VIP
原创力文档

文档评论(0)