第10章内部排序.ppt
《第10章内部排序.ppt》由会员分享,可在线阅读,更多相关《第10章内部排序.ppt(63页珍藏版)》请在第壹文秘上搜索。
1、Chapter10 排序2 排序的基本概念直接插入排序起泡排序简单选择排序快速排序堆排序6.1基本概念4 排序排序在计算机程序设计中有着非常重要的地位,许多具体应用要求对数据进行排序,而许多复杂的算法也要求以排序为基础。5 排序排序:将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。数据表(datalist):它是待排序数据对象的有限集合。主关键字(key):数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,作为排序依据,称为关键字。也称为排序码。6 排序有关排序的几个基本问题l稳定与不稳定l内部排序与外部排序(本章只关注内部排序)l性能的衡量7 排序方法的分
2、类按照排序思想l插入排序l交换排序l选择排序l归并排序l基数排序按照时间复杂度l简单排序l先进排序l其他6.2 直接插入排序9 直接插入排序10 直接插入排序0 1 2 3 4 5 temp i=1i=20 1 2 3 4 5 temp252525494949i=3252525*11 直接插入排序i=4i=516161616161608080812 直接插入排序ltypedef int SortData;lvoid InsertSort(SortData V,int n)ll/按非递减顺序对表进行排序l SortData temp;int i,j;l for(i=1;i 0;j-)/从后向前顺
3、序比较 l if(temp Vj-1)Vj=Vj-1;l else break;l Vj=temp;l l 13 直接插入排序时间复杂度为O(n2)14 折半插入排序15 链表上的插入排序6.3 起泡排序17 起泡排序18 起泡排序初始关键字第一趟排序第四趟排序第二趟排序第三趟排序第五趟排序19 起泡排序typedef int SortData;typedef int SortData;void BubbleSort(SortData a,int n)void BubbleSort(SortData a,int n)for(int i=0;in;i+)for(int i=0;in;i+)for
4、(int j=0;jn-i-1;j+)for(int j=0;j aj+1)if(aj aj+1)int temp=0;int temp=0;temp=aj;temp=aj;aj=aj+1;aj=aj+1;aj+1=temp;aj+1=temp;20 起泡排序最多做n-1趟起泡就能把所有对象排好序。在对象的初始排列已经按排序码从小到大排好序时,此算法只执行一趟起泡,做n-1次排序码比较,不移动对象。这是最好的情形。时间复杂度是O(n2)。21 起泡排序起泡排序的改进:在上面的程序中,如果序列经过很少几次循环就已经完成了排序,程序仍然会执行N-1次循环,造成多次循环做无用功。例如对于下面的序列,
5、实际上经过一次循环就已经有序了。22 起泡排序对于这种情况,我们可以设置一个标志,如果一次循环发生数据交换,则令标志为1;如果一次循环不发生数据交换,则令标志为0,当发现标志为0时,就意味着已经排序完成了。23 起泡排序typedef int SortData;typedef int SortData;void BubbleSort(SortData V,int n)void BubbleSort(SortData V,int n)int i=1;int i=1;int exchange=1;int exchange=1;while(i n&exchange)while(i=i;j-)for(
6、int j=n-1;j=i;j-)if(Vj-1 Vj)if(Vj-1 Vj)/逆序逆序 Swap(Vj-1,Vj);/Swap(Vj-1,Vj);/交换交换 exchange=1;/exchange=1;/标志置为标志置为1,1,有交换有交换 i+;i+;24 起泡排序扩展阅读:双冒泡排序。25 链表上的起泡排序6.4 简单选择排序27 简单选择排序在一组数据中选择具有最小排序关键字的一个。若它不是这组数据中的第一个,则将它与这组数据中的第一个对调;在剩下的N-1个数据中重复执行第、步,直到完成。28 简单选择排序简单选择排序的排序过程29 简单选择排序简单选择排序的基本算法typedef
7、int SortData;typedef int SortData;void SelectSort(SortData V,int n)void SelectSort(SortData V,int n)for(int i=0;i n-1;i+)for(int i=0;i n-1;i+)int k=i;/int k=i;/选择具有最小排序码的对象选择具有最小排序码的对象 for(int j=i+1;j n;j+)for(int j=i+1;j n;j+)if(Vj Vk)if(Vj 1)int k=start;for(int i=start;i ai)k=i;int temp=astart;ast
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 内部 排序
