第十章 排序.ppt
《第十章 排序.ppt》由会员分享,可在线阅读,更多相关《第十章 排序.ppt(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Neusoft Institute of InformationDate:25.Feb 2005IT Education&Training第十章 排序排序定义将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列叫排序分类按待排序记录所在位置内部排序:待排序记录存放在内存外部排序:排序过程中需对外存进行访问的排序按排序依据原则插入排序:直接插入排序、折半插入排序、希尔排序交换排序:冒泡排序、快速排序选择排序:简单选择排序、堆排序归并排序:2-路归并排序基数排序Neusoft Institute of InformationDate:25.Feb 2005IT Education&
2、Training插入排序 直接插入排序直接插入排序排序过程:整个排序过程为排序过程:整个排序过程为n-1趟插入,即先将序列中趟插入,即先将序列中第第1个记录看成是一个有序子序列,然后从第个记录看成是一个有序子序列,然后从第2个记录开个记录开始,逐个进行插入,直至整个序列有序始,逐个进行插入,直至整个序列有序Neusoft Institute of InformationDate:25.Feb 2005IT Education&Training例49 38 65 97 76 13 27i=2 38 (38 49)65 97 76 13 27i=3 65 (38 49 65)97 76 13 27
3、i=4 97 (38 49 65 97)76 13 27i=5 76 (38 49 65 76 97)13 27i=6 13 (13 38 49 65 76 97)27i=1 ()i=7 (13 38 49 65 76 97)2727jjjjjj977665493827 (13 27 38 49 65 76 97)排序结果:算法描述Neusoft Institute of InformationDate:25.Feb 2005IT Education&Training完整的插入排序算法为:public void insertSort(int r)int i,j;for(i=2;ir.lengt
4、h;i+)r0=ri;j=i-1;while(r0rj)rj+1=rj;j-;rj+1=r0;Neusoft Institute of InformationDate:25.Feb 2005IT Education&Trainingjava.io.Comparable,该接口定义了一个比较方法compareTo()方法,实现类只要用该方法实现,就可以采用下面代码对该类的对象执行直接插入排序,以升序为例:public void InsertSort(Comparable a)Comparable t;for(int i=1;i 0)/对每个待插入元素寻找插入位置if(pareTo(aj)0)if
5、(ai aj,则退出内循环break;j-;aj+1=t;Neusoft Institute of InformationDate:25.Feb 2005IT Education&Training希尔排序希尔排序(Shell Sort)n基本思想基本思想设待排序对象序列有设待排序对象序列有 n 个对象个对象,首先取一个整数首先取一个整数 gap 0)for(i=d;i=0&RjRj+d)temp=Rj;Rj=Rj+d;Rj+d=temp;j=j-d;d=d/2;希尔排序的算法希尔排序的算法Neusoft Institute of InformationDate:25.Feb 2005IT Ed
6、ucation&Training冒泡排序冒泡排序排序思路将第一个记录的关键字与第二个记录的关键字进行比较,若为逆序r1.keyr2.key,则交换;然后比较第二个记录与第三个记录;依次类推,直至第n-1个记录和第n个记录比较为止第一趟冒泡排序,结果关键字最大的记录被安置在最后一个记录上对前n-1个记录进行第二趟冒泡排序,结果使关键字次大的记录被安置在第n-1个记录位置重复上述过程,直到“在一趟排序过程中没有进行过交换记录的操作”为止8.3 交换排序Neusoft Institute of InformationDate:25.Feb 2005IT Education&Training2 21
7、10 08 82 25 5 4 49 9 2 25 5 1 16 62 21 14 49 92 25 5 2 25 5 1 16 6 0 08 82 21 14 49 92 25 52 25 51 16 6 0 08 82 21 14 49 92 25 5 2 25 51 16 6 0 08 82 21 14 49 92 25 5 2 25 51 16 6 0 08 8初始关键字第一趟排序第四趟排序第二趟排序第三趟排序2 21 14 49 92 25 5 2 25 51 16 60 08 8第五趟排序冒泡排序的过程冒泡排序的过程Neusoft Institute of InformationD
8、ate:25.Feb 2005IT Education&Training冒泡排序算法:public void bubble(Comparable r)int i,j,flag;Comparable temp;for(i=1;ir.length;i+)flag=0;for(j=0;jrj+1)flag=1;temprj+1;rj+1=rj;rj=temp;if(flag=0)return;Neusoft Institute of InformationDate:25.Feb 2005IT Education&Training快速排序快速排序基本思想:通过一趟排序,将待排序记录分割成独立的两部分,
9、其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序,以达到整个序列有序排序过程:对rst中记录进行一趟快速排序,附设两个指针i和j,设枢轴记录rp=rs,x=rp.key初始时令i=s,j=t首先从j所指位置向前搜索第一个关键字小于x的记录,并和rp交换再从i所指位置起向后搜索,找到第一个关键字大于x的记录,和rp交换重复上述两步,直至i=j为止再分别对两个子序列进行快速排序,直到每个子序列只含有一个记录为止Neusoft Institute of InformationDate:25.Feb 2005IT Education&Training快速排序的过程快速排
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十章 排序 第十
限制150内