- 1
- 0
- 约5.37千字
- 约 74页
- 2017-11-09 发布于浙江
- 举报
排序和
第10章 排序;;10.1 概述;内排序与外排序:内排序是指在排序期间数据对象全部存放在内存的排序;外排序是指在排序期间全部对象个数太多,不能同时存放在内存,必须根据排序过程的要求,不断在内、外存之间移动的排序。
排序的时间开销:排序的时间开销是衡量算法好坏的最重要的标志。排序的时间开销可用算法执行中的数据比较次数与数据移动次数来衡量。对于受对象关键字序列初始排列及对象个数影响较大的,需要按最好情况和最坏情况进行估算。;静态排序:排序的过程是对数据对象本身进行物理地重排,经过比较和判断,将对象移到合适的位置。这时,数据对象一般都存放在一个顺序的表中。
动态排序:给每个对象增加一个链接指针,在排序的过程中不移动对象或传送数据,仅通过修改链接指针来改变对象之间的逻辑顺序,从而达到排序的目的。
算法执行时所需的附加存储:评价算法好坏的另一标准。;衡量排序方法的标准
排序时所需要的平均比较次数
排序时所需要的平均移动次数
排序时所需要的平均辅助存储空间;10.2 插入排序;当插入第i (i ? 1) 个对象时,前面的V[0], V[1], …, v[i-1]已经排好序。这时,用v[i]的关键字与v[i-1], v[i-2], …的关键字顺序进行比较,找到插入位置即将v[i]插入,原位置上之后的所有对象依次向后顺移。;49 38 65 97 76 13 27;void InsertSort(SqList L)
{ for (int i=2;i=L.length;++i)
if (LT(L.r[i].key,L.r[i-1].key))//小于就将L.r[i]插入排序子表
{ L.r[0]=L.r[i]; // L.r[0]为监视哨
for (int 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];
}
};算法分析;二、折半插入排序;例;算法分析;三、希尔排序;取d3=1
三趟分组:;例;;;起泡排序的基本方法是:设待排序对象序列中的对象个数为 n。最多作 n-1 趟排序。在第 i 趟中顺次两两比较r[j-1].Key和r[j].Key,j = i, i+1, ?, n-i-1。如果发生逆序,则交换r[j-1]和r[j]。;例;算法分析;二、快速排序;例;快速排序的一趟处理过程;int Partition(SqList L, int low, int high)
{ L.r[0] = L.r[low];
int pivotkey = L.r[low].key;
while (low high)
{ while (lowhigh L.r[high].key = pivotkey) --high; L.r[low] = L.r[high];
while (lowhigh L.r[low].key = pivotkey) ++low; L.r[high] = L.r[low];
}
L.r[low]=L.r[0];
return low;
};算法分析;在最坏的情况,即待排序对象序列已经按其关键字从小到大排好序的情况下,其递归树成为单支树,每次划分只得到一个比上一次少一个对象的子序列。其排序速度退化到简单排序的水平,比直接插入排序还慢。占用附加存储(即栈)将达到O(n)。
若能更合理地选择基准对象,使得每次划分所得的两个子序列中的对象个数尽可能地接近,可以加速排序速度,但是由于对象的初始排列次序是随机的,这个要求很难办到。
快速排序是一种不稳定的排序方法。;10.4 选择排序;基本步骤为:i从1开始,直到n-1,进行n-1趟排序,第i 趟的排序过程为: 在一组对象r[i]~r[n] (i=1,2,…,n-1)中选择具有最小关键字的对象;并和第 i 个对象进行交换;;例;简单选择排序的算法
void SelectSort(SqList L)
{ for (int i=1; iL.length;++i)
{ int k=i;
for (int j=i+1;j=L.length;++j)
if (L.r[k].key L.r[j].key) k=j;
if (i!=k){ ElemType temp=L.r[i];
L.r[i]=L.r[k];
L.r[k]=temp;
} } };算法分析 ;二、树形选择排序(锦标赛排序) ;;
您可能关注的文档
- 拓展训梁头物料清单培训bom概念培训.ppt
- 拜耳法珊旺产氧化铝焙烧车间sn.ppt
- 拉链质梁涂管理.ppt
- 拿高分押汀好题波新课程高中数学轮复习精选必考问题视图及空间几课件新人教版.ppt
- 挂面生埠旺工艺.ppt
- 挑选护泛汪品的方法洗面奶.ppt
- 拱桥内梁挺计算.ppt
- 挡渣墙魏腿定性分析.ppt
- 挤出吹撕蛙.ppt
- 挫折与泻湍理应对.ppt
- 良肢位摆放在骨科康复中的应用.ppt
- 2026精选人教版一年级上册数学期末考试试卷(3套含答案解析).docx
- 2026新版人教版三年级上册语文期末考试试卷(3套含答案解析).pdf
- 2026精选人教版四年级上册英语期末考试试卷(3套含答案解析).pdf
- 2026新版人教版三年级上册数学期末考试试卷(3套含答案解析).pdf
- 2026新版人教版三年级下册数学期末考试试卷(3套含答案解析).docx
- 2026精选人教版四年级上册英语期末考试试卷(3套含答案解析).docx
- 2026新版人教版三年级上册语文期末考试试卷(3套含答案解析).docx
- 良肢位摆放与康复训练的结合.ppt
- 良肢位摆放在儿童康复中的应用.ppt
最近下载
- 建筑工程质量司法鉴定中修复方案及修复费用确定的探讨.docx VIP
- (一模)2026年合肥市2026届高三第一次教学质量检测 物理试卷 (含官方答案).docx
- 2025年中级消防设施操作员(维保类)考试题库及答案(浓缩500题).docx VIP
- 欧盟F-gas法规原文.pdf VIP
- 新人教版高一英语必修二英语单词默写表.pdf VIP
- 计算机音乐技术在高校音乐教学中应用.doc VIP
- 中国术数概论.pdf VIP
- 产品碳足迹核算与评价 课件 16 CBAM政策起源.pptx
- 供应链碳关税应对:2025年CBAM合规培训.pptx VIP
- 2025年华侨港澳台生入学考试高考数学试卷真题.pdf VIP
原创力文档

文档评论(0)