数据结构第10章内部排序.pptxVIP

  • 2
  • 0
  • 约2.31万字
  • 约 107页
  • 2024-01-27 发布于河南
  • 举报

数据结构第10章内部排序共107页,您现在浏览的是第1页!数据结构课程的内容数据结构第10章内部排序共107页,您现在浏览的是第2页!第10章内部排序10.1概述10.2插入排序10.3交换排序10.4选择排序10.5归并排序10.6基数排序数据结构第10章内部排序共107页,您现在浏览的是第3页!10.1概述1.什么是排序?将一组杂乱无章的数据按一定的规律顺次排列起来。存放在数据表中按关键字排序2.排序的目的是什么?——便于查找!3.排序算法的好坏如何衡量?时间效率—排序速度(即排序所花费的全部比较次数)空间效率—占内存辅助空间的大小稳定性—若两个记录A和B的关键字值相等,但排序后A、B的先后次序保持不变,则称这种排序算法是稳定的。数据结构第10章内部排序共107页,您现在浏览的是第4页!4.什么叫内部排序?什么叫外部排序?——若待排序记录都在内存中,称为内部排序;——若待排序记录一部分在内存,一部分在外存,则称为外部排序。注:外部排序时,要将数据分批调入内存来排序,中间结果还要及时放入外存,显然外部排序要复杂得多。5.待排序记录在内存中怎样存储和处理?①顺序排序——排序时直接移动记录;②链表排序——排序时只移动指针;③地址排序——排序时先移动地址,最后再移动记录。注:地址排序中可以增设一维数组来专门存放记录的地址。数据结构第10章内部排序共107页,您现在浏览的是第5页!7.内部排序的算法有哪些?——按排序的规则不同,可分为5类:插入排序交换排序(重点是快速排序)选择排序归并排序基数排序——按排序算法的时间复杂度不同,可分为3类:简单的排序算法:时间效率低,O(n2)先进的排序算法:时间效率高,O(nlog2n)基数排序算算法:时间效率高,O(d×n)d=关键字的位数(长度)数据结构第10章内部排序共107页,您现在浏览的是第6页!10.2插入排序简言之,边插入边排序,保证子序列中随时都是排好序的。插入排序有多种具体实现算法:1)直接插入排序2)折半插入排序3)表插入排序4)希尔排序数据结构第10章内部排序共107页,您现在浏览的是第7页!49暂存252525*01234564925*0808492525*2121例2:关键字序列T=(21,25,49,25*,16,08),请写出直接插入排序的具体实现过程。*表示后一个25解:假设该序列已存入一维数组V[7]中,将V[0]作为缓冲或暂存单元(Temp)。则程序执行过程为:49494949492525初态:1625212525*2116161608完成!i=1i=2i=3i=4i=5i=6时间效率:O(n2)——因为在最坏情况下,所有元素的比较次数总和为(0+1+…+n-1)→O(n2)。其他情况下还要加上移动元素的次数。空间效率:O(1)——因为仅占用1个缓冲单元算法的稳定性:稳定——因为25*排序后仍然在25的后面。数据结构第10章内部排序共107页,您现在浏览的是第8页!直接插入排序算法描述如下:voidInserSort(SqListL){//对顺序表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[i].key,L.r[i-1].key);--j)L.r[j+1]=L.r[j];//记录后移L.r[j+1]=L.r[0]; //插入到正确位置 }}//InsertSort数据结构第10章内部排序共107页,您现在浏览的是第9页!最坏情况下,第i趟插入时,第i个对象必须与前面i-1个对象都做关键字比较,并且每做1次比较就要做1次数据移动。则总的关键字比较次数KCN和对象移动次数RMN分别为数据结构第10章内部排序共107页,您现在浏览的是第10页!2)折半插入排序当待排序记录的数量n很小时,直接插入排序是一种简便的方法;但当记录数量n很大时,则不宜采用直接插入排序。由于插入排序的基本操作是在有序表R[1..i-1]中进行查找和插入的;则可以利用折半查找实现“在R[1..i-1]中查找R[i]的插入位置”,并在适当位置插入,把原来位置上的元素向后顺移。如此实现的插入排序为折半插入排序。优点:比较的次数大大减少,全部元素比较次数仅为O(nlog2n)。时间效率:虽然比较次数大大减少,可惜移动次数并未减少,所以排序效率仍为

文档评论(0)

1亿VIP精品文档

相关文档