- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构教案第10章 内部排序
第10章 内部排序
第10章 内部排序
10.1概述
排序:将一个数据元素(或记录)得任意序列,重新
排列成一个按关键字有序的序列。
设含n个记录的序列为:
{R ,R ,...,R }
1 2 n
对应的关键字序列为:
{K ,K ,...,K }
1 2 n
假设Ki=Kj,且在排序前的序列中Ri领先于Rj 。若
排序后得序列中Ri仍领先于Rj ,则称所用的排序方法
是稳定的;反之,若可能使排序后的序列中Rj领先于
Ri ,则称所用的排序方法是不稳定的。
#define MAXSIZE 20
typedef int KeyType;
typedef struct{
KeyType key;
InfoType otherinfo;
}RedType;
typedef struct{
RedType r[MAXSIZE+1]; \*r[0] 闲置或作哨兵
int length;
}
10.2插入排序
10.2 .1直接插入排序
排序思路:将一个记录插入到已排好序的有序表中
,从而得到一个新的、记录数增1的有序表。
例:38 49 65 97 插入56
void InsertSort(SqList L){
for( i=2; i=L.length; ++i)
if LT(L.r[i].key, L.r[i-1].key) {
L.r[0]= L.r[i];
for(j=i-1; LT(L.r[0].key, L.r[j].key); --j) L.r[j+1]= L.r[j];
L.r[j+1]=L.r[0];
}
}
算法效率:(比较和移动)
正序:比较n-1 ;记录不需要移动
逆序:比较(n+2)(n-1)/2; 移动(n+4)(n-1)/2;
平均的比较或移动次数:n2/4
时间复杂度:O(n2)
10.2 .2其它插入排序
一.折半插入排序
排序思路:查找过程利用折半查找来实现。
例:38 49 65 97 插入56
low=1 high=4
void BInsertSort(SqList L){
for( i=2; i=L.length; ++i){
L.r[0]= L.r[i]; low=1; high=i-1;
while (low=high){
m=(low+high)/2;
if LT(L.r[0].key, L.r[m].key) high=m-1;
else low=mid+1;
}
for(j=i-1; j=high+1; --j) L.r[j+1]= L.r[j];
L.r[high+1]=L.r[0];
}
}
2
比较减少;移动次数不变 时间复杂度:O(n )
二.2-路插入排序
排序思路:另设一个和L.r 同类型的数组d,首先将
L.r[1]赋值d[0],并将d[0]看成是在排好序的序列中处
于中间位置的记录,然后从L.r 中第2个记录起依次插
入到d[0]之前或之后的有序序列中。
注:在这样的方法中,如果L.r[1]选择比较恰当的话,
那么,等于说插入一个记录时只需要进行一半数量的移
动(在的之前或之后的一半有序序列),移动减为n2/8
。
例:49 38 65 97 76 13 27 49
排序过程中d的状态:
i=2 (49)
first ↑↑final
i=3 (49) (38)
↑final first ↑
i=4 (49 65) (38)
↑final first ↑
i=5 (49 65 97)
您可能关注的文档
- 数学代数公式定理汇总.pdf
- 数学之美何炳生02C.pdf
- 数学公式中常见符号的快捷键.doc
- 数学几何必会定理.doc
- 数学二模二评讲稿(2010合肥).pdf
- 数学函数部分练习.doc
- 数学分析习题集11复旦大学.pdf
- 数学分析中的不动点问题.pdf
- 数学分析中的数形结合思想方法及其教学.pdf
- 数学分析傅里叶章节课件.ppt
- 剧本杀行业报告:内容创作规范与剧本市场拓展策略.docx
- 剧本杀行业区域市场区域文化特色与市场潜力分析报告.docx
- 剧本杀行业区域市场拓展实战案例研究.docx
- 剧本杀行业区域市场拓展路径与模式探索报告.docx
- 剧本杀行业区域市场竞争态势与品牌差异化策略研究报告.docx
- 剧本杀行业2025年西北区域市场市场细分领域竞争态势与品牌竞争策略分析研究报告.docx
- 剧本杀行业2025年西北市场拓展前景预测报告.docx
- 剧本杀行业2025年长沙市场发展潜力分析报告.docx
- 剧本杀行业2025年长三角市场竞争策略与布局分析.docx
- 医疗行业数据合规:2025年数据安全法实施后的合规监管挑战与应对.docx
文档评论(0)