- 5
- 0
- 约9.15千字
- 约 42页
- 2015-12-24 发布于广东
- 举报
第9章 排序 第9章 排序 排序是一种重要运算,在很多领域中有广泛的应用。排序的方法很多,本章介绍典型高效排序方法,主要内容: ? 排序的基本概念和术语 ? 插入排序:直接插入排序和希尔排序 ? 交换排序:冒泡排序和快速排序 ? 选择排序:简单选择排序和堆排序 ? 归并排序 ? 基数排序 ? 各种排序方法的比较分析 本章分为(3~4)讲 第1讲 9.1 排序的基本概念 9.2 插入排序 9.3 交换排序 9.1 排序的基本概念 排序(Sorting)是数据处理领域中一种最常用的运算。排序又称分类。 排序:是把一组记录(元素)按照某个域的值的递增(即由小到大)或递减的次序重新排列的过程。可以使杂乱无章的数据序列重新排列成有序序列。 排序分两类:内部排序和外部排序。 本章主要讨论内部排序。 排序的稳定性 在待排序的记录中若有多个相同的关键字,在采用某种方法排序后,这些关键字相同的记录相对先后次序不变,则称这种排序方法是稳定的;否则是不稳定的。 本章所介绍的内部排序方法,大多数是通过比较关键字的大小决定记录的先后次序,也称为比较排序。基数排序是不经关键字比较的排序方法。 排序选用顺序存储 记录结构Data定义: const MAXSIZE=1000; //数组最大容量 typedef int ElemType; //关键字的类型 struct Data { ElemType key; //排序关键字域 int oth ; //其他域,根据需要自定 }; 数组的定义如下: Data ar[MAXSIZE], br[MAXSIZE]; 9.2 插入排序 插入排序(Insertion Sort)又可分几种不同的方法,主要介绍2种方法: 直接插入排序; 希尔排序; 9.2.1 直接插入排序 直接插入排序(Straight Insertion Sort)是一种最简单的排序方法。算法思路: 设有一组关键字{K1,K2,…,Kn}; 开始,认为K1是一个有序序列; 让K2插入表长为1的有序序列,使之成为一个表长为2的有序序列; 然后让K3插入表长为2的有序序列,使之成为一个表长为3的有序序列; 依此类推,最后让Kn插入表长为n?1的有序序列,得一个表长为n的有序序列。 直接插入排序-例9.1 设有一组关键字序列{55,22,44,11,33},这里n=5。按由小到大的顺序排序。 算法9.1 template class T void stinsort ( T r[ ], int n) { int i,j; for (i=2; i=n; i++) //共进行n-1趟插入 { r[0]=r[i]; //r[0]为监视哨 j=i-1; while (r[j].key r[0].key) {r[j+1]=r[j]; j--; } r[j+1]=r[0]; //原r[i]插到r[j]后边 } }//sinsort 上页是函数模板,类型抽象。具体排序时注意: const MAXSIZE=1000; //数组最大容量 typedef int ElemType; //关键字类型 struct Data{ElemType key; //关键字域 int oth; //其他域 }; int main() { Data s[MAXSIZE]; int n; cinn; //记录的个数, MAXSIZEn for(int i=1; i=n; i++) { cins[i].key; …; } //为s数组提供数据
您可能关注的文档
最近下载
- SY-T 5504.3-2008 油井水泥外加剂评价方法 第3部分:减阻剂.pdf VIP
- 【三年级数学】每日口算 30 天.pdf VIP
- 物资采购应急方案.docx VIP
- 餐饮服务与管中职全套完整教学课件.pptx
- 第四版国际压力性损伤溃疡预防和治疗临床指南解读PPT课件.pptx VIP
- 1209 六年级(上)英语知识点汇总(外研版).docx VIP
- ICP-MS介绍讲课课件.ppt VIP
- 6篇2025年度民主生活会“五个带头”对照检查材料(参考范文).docx VIP
- DBJT_15-138-2018_建筑电气防火检测_技术规程-全国各省建筑标准.pdf VIP
- j12ZG604-全国各省建筑标准.pdf VIP
原创力文档

文档评论(0)