数据结构(c语言版)课件_第八章_排序_(严蔚敏、吴伟民编_清华大学出版社)

合集下载

教学课件 数据结构--严蔚敏

教学课件 数据结构--严蔚敏
1.1 数据结构讨论的范畴 1.2 基本概念 1.3 算法和算法的量度
1.1 数据结构讨论的范畴
Niklaus Wirth:
Algorithm + Data Structures = Programs
程序设计:
算法: 数据结构:
为计算机处理问题编制 一组指令集
处理问题的策略
问题的数学模型
例如: 数值计算的程序设计问题
结构静力分析计算 ─━ 线性代数方程组
全球天气预报 ─━ 环流模式方程 (球面坐标系)
非数值计算的程序设计问题
例一: 求一组(n个)整数中的最大值 算法: ? 基本操作是“比较两个数的大小” 模型:? 取决于整数值的范围
例二:计算机对弈
算法:? 对弈的规则和策略 模型:? 棋盘及棋盘的格局
例三:足协的数据库管理
S 是 D上关系的有限集。
数据的存储结构
—— 逻辑结构在存储器中的映象
“数据元素”的映象 ?
“关系”的映象 ?
数据元素的映象方法:
用二进制位(bit)的位串表示数据元素 (321)10 = (501)8 = (101000001)2 A = (101)8 = (001000001)2
关系的映象方法:(表示x, y的方法)
抽象数据类型的表示和实现
抽象数据类型需要通过固有数据 类型(高级编程语言中已实现的数据 类型)来实现。
例如,对以上定义的复数。
// -----存储结构的定义
typedef struct { float realpart; float imagpart;
}complex;
// -----基本操作的函数原型说明
顺序映象
以相对的存储位置表示后继关系 例如:令 y 的存储位置和 x 的存储位置之间差一个常量 C

数据结构(c语言版)严蔚敏

数据结构(c语言版)严蔚敏

第一章概论1.数据:信息的载体,能被计算机识别、存储和加工处理。

2.数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。

3.数据结构:数据之间的相互关系,即数据的组织形式。

它包括:1)数据的逻辑结构,从逻辑关系上描述数据,与数据存储无关,独立于计算机;2)数据的存储结构,是逻辑结构用计算机语言的实现,依赖于计算机语言。

3)数据的运算,定义在逻辑结构上,每种逻辑结构都有一个运算集合。

常用的运算:检索/插入/删除/更新/排序。

4.数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

数据的存储结构是逻辑结构用计算机语言的实现。

5.数据类型:一个值的集合及在值上定义的一组操作的总称。

分为:原子类型和结构类型。

6.抽象数据类型:抽象数据的组织和与之相关的操作。

优点:将数据和操作封装在一起实现了信息隐藏。

7. 抽象数据类型ADT:是在概念层上描述问题;类:是在实现层上描述问题;在应用层上操作对象(类的实例)解决问题。

8.数据的逻辑结构,简称为数据结构,有:(1)线性结构,若结构是非空集则仅有一个开始和终端结点,并且所有结点最多只有一个直接前趋和后继。

(2)非线性结构,一个结点可能有多个直接前趋和后继。

9.数据的存储结构有:1)顺序存储,把逻辑相邻的结点存储在物理上相邻的存储单元内。

2)链接存储,结点间的逻辑关系由附加指针字段表示。

3)索引存储,存储结点信息的同时,建立附加索引表,有稠密索引和稀疏索引。

4)散列存储,按结点的关键字直接计算出存储地址。

10.评价算法的好坏是:算法是正确的;执行算法所耗的时间;执行算法的存储空间(辅助存储空间);易于理解、编码、调试。

11.算法的时间复杂度T(n):是该算法的时间耗费,是求解问题规模n的函数。

记为O(n)。

时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。

数据结构_(严蔚敏C语言版)_学习、复习提纲.

数据结构_(严蔚敏C语言版)_学习、复习提纲.

期末复习 第一章 绪论 复习1、计算机算法必须具备输入、输出、可行性、确定性、有穷性5个特性。

2、算法分析的两个主要方面是空间复杂度和时间复杂度。

3、数据元素是数据的基本单位。

4、数据项是数据的最小单位。

5、数据结构是带结构的数据元素的集合。

6、数据的存储结构包括顺序、链接、散列和索引四种基本类型。

基础知识数据结构算 法概 念逻辑结构 存储结构数据运算数据:计算机处理的信息总称 数据项:最小单位 数据元素:最基本单位数据对象:元素集合数据结构:相互之间存在一种或多种特定关系的数据元素集合。

概念:数据元素之间的关系 线性结构:一对一非线性结构 树:一对多 图:多对多顺序存储结构 链表存储结构 索引。

散列。

算法描述:指令的有限有序序列算法特性 有穷性 确定性 可行性 输入 输出 算法分析时间复杂度 空间复杂度第二章 线性表 复习1、在双链表中,每个结点有两个指针域,包括一个指向前驱结点的指针 、一个指向后继结点的指针2、线性表采用顺序存储,必须占用一片连续的存储单元3、线性表采用链式存储,便于进行插入和删除操作4、线性表采用顺序存储和链式存储优缺点比较。

5、简单算法第三章 栈和队列 复习线性表顺序存储结构链表存储结构概 念基本特点基本运算定义逻辑关系:前趋 后继节省空间 随机存取 插、删效率低 插入 删除单链表双向 链表 特点一个指针域+一个数据域 多占空间 查找费时 插、删效率高 无法查找前趋结点运算特点:单链表+前趋指针域运算插入删除循环 链表特点:单链表的尾结点指针指向附加头结点。

运算:联接1、 栈和队列的异同点。

2、 栈和队列的基本运算3、 出栈和出队4、 基本运算第四章 串 复习栈存储结构栈的概念:在一端操作的线性表 运算算法栈的特点:先进后出 LIFO初始化 进栈push 出栈pop队列顺序队列 循环队列队列概念:在两端操作的线性表 假溢出链队列队列特点:先进先出 FIFO基本运算顺序:链队:队空:front=rear队满:front=(rear+1)%MAXSIZE队空:frontrear ∧初始化 判空 进队 出队取队首元素第五章 数组和广义表 复习串存储结构运 算概 念顺序串链表串定义:由n(≥1)个字符组成的有限序列 S=”c 1c 2c 3 ……cn ”串长度、空白串、空串。

数据结构C语言版ppt课件-PPT精品文档

数据结构C语言版ppt课件-PPT精品文档


an-1,0 an-1,1

an-1,n-1
an-1,0 an-1,1


Ann
a0,0 a1,0
a0,1 a1,1
… …
a0,n-1 a1,n-1
Ann
a0,0 a1,0
a1,1



an-1,n-1
对称阵
中国网页设计 xin126
下三角矩阵
第5章 数组和广义表
中国网页设计 xin126
数据结构
(C语言版)
严蔚敏、吴伟民编著 清华大学出版社 学习网站:xin126/list.asp?id=301
中国网页设计 xin126
第5章 数组和广义表
主要内容:
一、数组的定义 二、数组的表示和实现 三、矩阵的压缩存储 四、广义表的定义 五、广义表的存储结构
中国网页设计 xin126
第5章 数组和广义表
0 0 0 0 0 0
0 0 0 0 0 0
中国网页设计 xin126
第5章 数组和广义表
(2) 稀疏矩阵的存储: 若按常规方法进行存储,零值元素会占了很大空间 因此对于稀疏矩阵的存储通常采用以下两种方式: 三元组表和十字链表进行存储。
中国网页设计 xin126
第5章 数组和广义表
中国网页设计 xin126
第5章 数组和广义表
以行序为主序的求址公式:
假设每个数据元素占L个存储单元,则二维 数组A中任一元素aij的存储位置可由下式确定: LOC(i, j) = LOC(0, 0) + (n×i + j)*L 式中,LOC(i, j)是aij的存储位置,LOC(0, 0)是a00的存储位置,即二维数组A的起始存储 位置,也称为基地址或基址。b2是数组第二维 的长度,即数组A(m×n)中的列数n。

数据结构c语言版严蔚敏

数据结构c语言版严蔚敏
其中:D是数据对象,S是D上的关系集,P是对D的基 本操作集。
ADT的一般定义形式是: ADT <抽象数据类型名>{
数据对象: <数据对象的定义> 数据关系: <数据关系的定义> 基本操作: <基本操作的定义> } ADT <抽象数据类型名> – 其中数据对象和数据关系的定义用伪码描述。 – 基本操作的定义是:
法“运行工作量”的大小,只依赖于问题的规模(通 常用n表示),或者说,它是问题规模的函数。
算法分析应用举例
算法中基本操作重复执行的次数是问题规模n的某 个函数,其时间量度记作 T(n)=O(f(n)),称作算法的 渐近时间复杂度(Asymptotic Time complexity),简称时 间复杂度。
姓名
电话号码
陈海
李四锋
。。。
。。。
表1-1 线性表结构
例2:磁盘目录文件系统
磁盘根目录下有很多子目录 及文件,每个子目录里又可以包 含多个子目录及文件,但每个子 目录只有一个父目录,依此类推:
本问题是一种典型的树型结 构问题,如图1-1 ,数据与数据 成一对多的关系,是一种典型的 非线性关系结构—树形结构。
③ 可行性: 一个算法是能行的。即算法描述的操作 都可以通过已经实现的基本运算执行有限次来实现。
④ 输入: 一个算法有零个或多个输入,这些输入 取自于某个特定的对象集合。
⑤ 输出: 一个算法有一个或多个输出,这些输出 是同输入有着某些特定关系的量。
一个算法可以用多种方法描述,主要有:使用自然 语言描述;使用形式语言描述;使用计算机程序设计语 言描述。
O(㏒n) :对数时间阶 O(n㏒n) :线性对数时间阶
O (nk): k≥2 ,k次方时间阶 例1 两个n阶方阵的乘法

《数据结构》课后答案(C语言版)(严蔚敏_吴伟民著)

《数据结构》课后答案(C语言版)(严蔚敏_吴伟民著)

第1章 绪论1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。

在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。

是对一般数据类型的扩展。

1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。

一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。

抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。

在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

1.3 设有数据结构(D,R),其中{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =试按图论中图的画法惯例画出其逻辑结构图。

解:1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

解:ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={<r,i>} 基本操作: InitComplex(&C,re,im)操作结果:构造一个复数C ,其实部和虚部分别为re 和imDestroyCmoplex(&C)操作结果:销毁复数CGet(C,k,&e)操作结果:用e返回复数C的第k元的值Put(&C,k,e)操作结果:改变复数C的第k元的值为eIsAscending(C)操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0IsDescending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0Max(C,&e)操作结果:用e返回复数C的两个元素中值较大的一个Min(C,&e)操作结果:用e返回复数C的两个元素中值较小的一个}ADT ComplexADT RationalNumber{数据对象:D={s,m|s,m为自然数,且m不为0}数据关系:R={<s,m>}基本操作:InitRationalNumber(&R,s,m)操作结果:构造一个有理数R,其分子和分母分别为s和m DestroyRationalNumber(&R)操作结果:销毁有理数RGet(R,k,&e)操作结果:用e返回有理数R的第k元的值Put(&R,k,e)操作结果:改变有理数R的第k元的值为eIsAscending(R)操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0IsDescending(R)操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0Max(R,&e)操作结果:用e返回有理数R的两个元素中值较大的一个Min(R,&e)操作结果:用e返回有理数R的两个元素中值较小的一个}ADT RationalNumber1.5 试画出与下列程序段等价的框图。

数据结构(C语言版)清华大学出版社 严蔚敏 吴伟民

数据结构(C语言版)清华大学出版社 严蔚敏 吴伟民

吉首大学题库一、一、单选题(每题 2 分,共20分)1. 1.对一个算法的评价,不包括如下()方面的内容。

A.健壮性和可读性B.并行性C.正确性D.时空复杂度2. 2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( )。

A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3. 3.对线性表,在下列哪种情况下应当采用链表表示?( )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4. 4.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是( )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 35. 5.AOV网是一种()。

A.有向图B.无向图C.无向无环图D.有向无环图6. 6.采用开放定址法处理散列表的冲突时,其平均查找长度()。

A.低于链接法处理冲突 B. 高于链接法处理冲突C.与链接法处理冲突相同D.高于二分查找7.7.若需要利用形参直接访问实参时,应将形参变量说明为()参数。

A.值B.函数C.指针D.引用8.8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的()。

A.行号B.列号C.元素值D.非零元素个数9.9.快速排序在最坏情况下的时间复杂度为()。

A.O(log2n) B.O(nlog2n) C.0(n) D.0(n2)10.10.从二叉搜索树中查找一个元素时,其时间复杂度大致为( )。

A. O(n)B. O(1)C. O(log2n)D. O(n2)二、二、运算题(每题 6 分,共24分)1. 1.数据结构是指数据及其相互之间的______________。

当结点之间存在M对N(M:N)的联系时,称这种结构为_____________________。

数据结构(c语言版)课件 第八章 排序 (严蔚敏、吴伟民编 清华大学出版社)

数据结构(c语言版)课件 第八章 排序 (严蔚敏、吴伟民编 清华大学出版社)

例 初始: 49 38 65 97 76 13 27 48 55 4 取d1=5 49 一趟分组: 38 65 97 76 13 27 48 55 4
一趟排序:13 27 48 55 4 取d2=3 13 二趟分组: 27 48 55 4
49 38 65 97 76 49 38 65 97 76
二趟排序:13 4 48 38 27 49 55 65 97 76 取d3=1 13 三趟分组: 27 48 55 4 49 38 65 97 76
k 38 j k 65 j 97 j 76 j
k 13 49 j 27 ] j k 97 j 97 [97 49 49 49 49 76 j 76 76 [76 65 65 65 49 38 ] 27 j 49 49 97 [97 76 76 j 38 ] 65 ] 65 ] 76 ] [97 ] 97
按排序所需工作量
简单的排序方法:T(n)=O(n) 先进的排序方法:T(n)=O(logn) 基数排序:T(n)=O(d.n)
排序基本操作
比较两个关键字大小 将记录从一个位置移动到另一个位置
8.1 插入排序
直接插入排序
排序过程:整个排序过程为n-1趟插入,即先将序列中 第1个记录看成是一个有序子序列,然后从第2个记录 开始,逐个进行插入,直至整个序列有序 算法描述
初始时令i=s,j=t 首先从j所指位置向前搜索第一个关键字小于x的记录,并和rp 交换 再从i所指位置起向后搜索,找到第一个关键字大于x的记录, 和rp交换 重复上述两步,直至i==j为止 再分别对两个子序列进行快速排序,直到每个子序列只含有 一个记录为止
x 例 初始关键字: 27 49 i 完成一趟排序: ( 27 38 i 38 13 49 65 i 13) 49 97 iij 76 j 97 49 13 j 97 65 49 27 j 65 50 j 50)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

的堆?
第二个问题解决方法——筛选
方法:输出堆顶元素之后,以堆中最后一个元素替代之;然
后将根结点值与左、右子树的根结点值进行比较,并与其中 小者进行交换;重复上述操作,直至叶子结点,将得到新的 堆,称这个从堆顶至叶子的调整过程为“筛选”
例 38 50 97 76
13 27 65 49 13 38
76 65
50
76
97 13 49 38
65 27
97
49
38
27
输出:13 27 38 49
输出:13 27 38 49
97
65 65 76 50 49 38 97 27 13 输出:13 27 38 49 50 50 76 49
97 65
38 27
76
50 13 49 38
27
13 输出:13 27 38 49 50
输出:13 27 38 49 50 65
76 97 50 49 38 65 27 13 输出:13 27 38 49 50 65 97 50
97 76
49 38
65
27
13
输出:13 27 38 49 50 65 76
76
50 13 49 38
65 27
输出:13 27 38 49 50 65 76 97

38 49 49 38 65 76 97 13 97 76 97 27 13 30 97 27 97 30 初 始 关 键 字
38 49 65 13 76 27 76 13 30 76 27 76 30 97 第 一 趟
38 49 13 65 27 65 13 30 65 27 65 30
38 13 49
五趟: 13 六趟: 13 排序结束: 13
27
27 27 27
38
38 38 38
49
49 49 49
[76
65 65 65
97
[97 76 76
65 ]
76 ] [97 ] 97
算法描述
算法评价
时间复杂度
记录移动次数 最好情况:0 最坏情况:3(n-1) 比较次数: n 1 (n i) 1 (n 2 n)
i=8 20 (6
i=8 20 (6
…...
(6
13 30 39
13 30 39 m 13 30 39 j m 13 30 39 s mj 13 30 39 j s
42 70 85 ) 20
42 70 85 ) 20 j 42 70 85 ) 20 42 70 85 ) 20
42 70 85 ) 20
42 70 85 )
13 20 30 39
算法描述
算法评价
时间复杂度:T(n)=O(n² )
空间复杂度:S(n)=O(1)
Ch8_2.c
希尔排序(缩小增量法) 排序过程:先取一个正整数d1<n,把所有相隔d1的记 录放一组,组内进行直接插入排序;然后取d2<d1, 重复上述分组和排序操作;直至di=1,即所有记录放 进一个组中排序为止
i
38
i
13)
iij
j
65
49 (76
分别进行快速排序: ( 13) 27
(38) 49 (50
65)
76
(97)
快速排序结束:
13
27
38
49
50
65
76
97
算法描述
算法评价
时间复杂度
最好情况(每次总是选到中间值作枢轴)T(n)=O(nlog2n) 最坏情况(每次总是选到最小或最大元素作枢轴)
算法描述
第一个问题解决方法
方法:从无序序列的第n/2个元素(即此无序序列对应的完
全二叉树的最后一个非终端结点)起,至第一个元素止,进 行反复筛选
例 含8个元素的无序序列(49,38,65,97,76,13,27,50) 49 38 65 38 50 97 76 13 49 65 27 97 50 49
49 38 65 97 76
三趟排序:4 13 27 38 48 49 55 65 76 97
算法描述
#define T 3 int d[]={5,3,1};
例 13 48 97 55 76 4 13 49 27 38 65 49 27 38 65 48 97 55 76 4 j j j
j
j
i

8.2 交换排序
冒泡排序 排序过程
将第一个记录的关键字与第二个记录的关键字进行比较,若
为逆序r[1].key>r[2].key,则交换;然后比较第二个记录与第 三个记录;依次类推,直至第n-1个记录和第n个记录比较为 止——第一趟冒泡排序,结果关键字最大的记录被安置在最 后一个记录上 对前n-1个记录进行第二趟冒泡排序,结果使关键字次大的记 录被安置在第n-1个记录位置 重复上述过程,直到“在一趟排序过程中没有进行过交换记 录的操作”为止
Ch8_1.c
空间复杂度:S(n)=O(1)
n2 4
n2 4
T(n)=O(n² )
折半插入排序 排序过程:用折半查找方法确定插入位置的排序叫~
例 i=1 (30) 13 70 85 39 42 6 30) 70 85 39 42 6 20 20 i=2 13 (13
i=7 6
i=8 20 (6 s i=8 20 (6 s i=8 20 (6
初始时令i=s,j=t
首先从j所指位置向前搜索第一个关键字小于x的记录,并和rp
交换 再从i所指位置起向后搜索,找到第一个关键字大于x的记录, 和rp交换 重复上述两步,直至i==j为止 再分别对两个子序列进行快速排序,直到每个子序列只含有 一个记录为止
x 例 初始关键字: 27 49 i 完成一趟排序: ( 27 38 13 49 65 49 97 76 j 97 49 13 j 97 49 65 27 50 j 50)
T(n)=O(n² ) T(n)=O(n² )
空间复杂度:需栈空间以实现递归
最坏情况:S(n)=O(n)
一般情况:S(n)=O(log2n)
Ch8_5.c

8.3 选择排序
简单选择排序 排序过程
首先通过n-1次关键字比较,从n个记录中找出关键字最小的
记录,将它与第一个记录交换 再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的 记录,将它与第二个记录交换 重复上述操作,共进行n-1趟排序后,排序结束
比较次数: (n i) (n 2 n)
i 1
n 1
1 2
移动次数:3 (n i ) 3 (n 2 n)
n
T(n)=O(n² )
i 1
2
空间复杂度:S(n)=O(1)
Ch8_4.c
快速排序
基本思想:通过一趟排序,将待排序记录分割成独立
的两部分,其中一部分记录的关键字均比另一部分记 录的关键字小,则可分别对这两部分记录进行排序, 以达到整个序列有序 排序过程:对r[s……t]中记录进行一趟快速排序,附 设两个指针i和j,设枢轴记录rp=r[s],x=rp.key
例 初始: 49 38 65 97 76 13 27 48 55 4 取d1=5 49 38 65 97 76 13 27 48 55 4 一趟分组:
一趟排序:13 27 48 55 4 取d2=3 13 27 48 55 4 二趟分组:
49 38 65 97 76 49 38 65 97 76
二趟排序:13 4 48 38 27 49 55 65 97 76 取d3=1 13 27 48 55 4 三趟分组:
选择排序:简单选择排序、堆排序
归并排序:2-路归并排序 基数排序
按排序所需工作量
简单的排序方法:T(n)=O(n² ) 先进的排序方法:T(n)=O(logn) 基数排序:T(n)=O(d.n)
排序基本操作 比较两个关键字大小 将记录从一个位置移动到另一个位置

8.1 插入排序
i
i
i
i
4 48 38 一趟排序:13 27 55 27 4 49 55 38 65 97 76
j j
j
j
ji
ij
ij
ij
i
i
i
二趟排序: 13 4 48 38 27 49 55 65 97 76 Ch8_3.c
希尔排序特点
子序列的构成不是简单的“逐段分割”,而是将相隔某个增
量的记录组成一个子序列 希尔排序可提高排序速度,因为 分组后n值减小,n² 更小,而T(n)=O(n² ),所以T(n)从总体 上看是减小了 关键字较小的记录跳跃式前移,在进行最后一趟增量为1 的插入排序时,序列已基本有序 增量序列取法 无除1以外的公因子 最后一个增量值必须为1
13 38
76 65 27 49
堆排序:将无序序列建成一个堆,得到关键字最小
(或最大)的记录;输出堆顶的最小(大)值后,使 剩余的n-1个元素重又建成一个堆,则可得到n个元素 的次小值;重复执行,得到一个有序序列,这个过程 叫~ 堆排序需解决的两个问题:
如何由一个无序序列建成一个堆? 如何在输出堆顶元素之后,调整剩余元素,使之成为一个新
k 例 i=1 初始: [ 49 13
k
k
38 j
k
65 j
97 j
76 j
13 49 j
27 ] j
k
i=2 一趟: 13
[38 27 65 j
97 j 97 [97
76 j 76 76
49 38 27 ] j 49 49 j 38 ] 65 ]
相关文档
最新文档