


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单循环排序算法及其改进 关键词 时间复杂度; 稳定性; 空间复杂度; 数据交换 0 引言 排序算法对于计算机信息处理很重要,一个好的排序不仅可以使信息查找的效率提高,而且还直接影响着计算机的工作效率 。目前,最常见的排序算法有冒泡排序法、选择排序法、插入排序法、快速排序法等算法。这些排序算法各有自己的优缺点,不同的排序算法适应不同的情况。就算法的整体性能而言,目前很难提出一种适应所有的排序场合的最好的排序算法,每种算法都有自己
2、不同的适用场合 。比较发现,这些常用的排序算法的设计均为双重甚至多重循环算法,目前还很少有单重循环的排序算法。本文将提出一种只需单重循环即可完成排序的算法,可适用于许多特殊场合。1 算法思想 该算法的基本思想是:采取一趟逐步推进式的排序算法,若排序过程中发生一对数据的交换,则交换后排序过程回退一步,从前一对数据的比较开始继续进行。以升序为例:第个与其后的第+1个这一对数据比较,如若前者小,则排序不变,然后比较第+1个和第+2个;否则(前者大),第+1个和第个数据进行交换,此时循环回退一步进行前一对数据的比较,即第-1个和新交换后的第个作比较,这两
3、个数字间的比较也是采用同样的方法推进或回退,依次类推进行排序的逐步推进。凡是两个数字比较大小时为正常升序的,则比较向前推进。凡是遇到比较大小为逆序需交换的情况,均在交换后将比较回退一步再重新开始,最终将实现单循环排序成功。3 算法源程序 为更清楚地了解这种单循环排序算法,以下给出了VC+6.0环境下写成的算法示例源程序,该程序为按升序排列,并且对升序排序算法的循环结构进行了解释说明。#include<iostream.h>#define M 50void main() int i,n,aM; cou
4、t<<"输入计算的个数:" cin>>n; cout<<"输入需要排序的"<<n<<"个正整数:" for(i=1;i<=n;i+) cin>>ai; cout<<"单循环排序算法排序后:"for(i=1;i<n;i+)
5、160; if(ai<=ai+1) continue; else int t=a
6、i; ai=ai+1; ai+1=t; if(i!=0) i=i-2; /若为逆序,需要交换数据,且排序过程回退一步,进行前一对数据间的比较。注意,经过+和-2,相当i=i-1,
7、; for(i=1;i<=n;i+)cout<<ai<<' 'cout<<endl;3 复杂度分析 该算法在空间上不需要附加的辅助空间。在时间上,当待排序数据为正序时。程序将一直向前推进,排序过程只需要进行-1次比较,且不需移动任何数据记录,此时为最优状态,时间复杂度为O(n) ;反之,当待排序数据为逆序时为最坏情况,此时算法需要进行(n-1) 2次比较,并进行 n(n-1)/2次数据交换,时间复杂度为O(n2) 。由
8、于此排序方法为顺序推进,在回退的过程中也未出现相等数据的交换,所以此排序算法是稳定的。4 算法改进 此算法实现了单循环排序算法设计,在数据为基本正序的过程中实现起来方便快捷。但在逆序或数据复杂的情况下,在循环结构中,数据在一次比较后开始回退,若数据比较不断回退,当回退完成后,新一轮的向前推进循环将重复比较一些已经比较过了的数据,因此有必要对回退开始点处的i值进行跟踪保留,以便回退完成后,直接从回退开始点处开始接着向前推进余下的循环,而不用重复比较回退结束处到回退开始点之间的已经比较过一次的数据。其改进只需要将上面程序中的:if(i!=0) i=i
9、-2;换成以下代码:for(j=i-1;j>0;j-) if(aj-1<=aj) break;else int m=aj-1;aj-1=aj;aj=m; 改进后的算法在时间性能上得到了显著提升。当排序数据为正序时,排序过程只需要进行 n-1次比较,且不需要移动任何数据记录,此时为最优状态,时间复杂度为O(n) ,这和改进前的时间复杂度是一致的。但当排序数据为逆序时,改进前的算法需要进行(n-1)2 次比较,并进行 n(n-1)/2次数据交换;而优化后的算法虽然同样要进行(-1)/2次数据交换,但只需进行 次比较,时间得以节省,两者在最坏情况下的时间复杂度均为 O(n2) 。在随机的待排序数据序列中,改进后的算法明显优于优化前的算法及冒泡排序法。5 结论 这种单循环排序算法设计简单,易于实现,对于基本有序的数据排序性能优秀,适合数据量适中或数据量大但基本有序时使用,而且该算法对于数据排列大都是两两错位的排序过程更是接近最优算法。并针对其在逆序或数据复杂时排序的不足,对算法进行改进,改进后的双循环算法,由于减掉了重复比较,算法性能得到进一步优化,可应用于更多的排序过程中。参考文献3 严蔚敏,吴伟民.数据结构(语言版).北京:清华大学出版社,199
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 婚后财产补充协议
- 沈阳转让协议书
- 精密机械零部件加工与质量保证合同
- 软件售后维保合同协议
- 股权转让及合作协议
- 幕墙石材钢架施工合同
- 产品采购供应合同附加条款
- 赠送贴纸定制合同协议
- 车撞人协议书范本
- 跟员工提前合同解除协议
- 陶艺店管理制度
- 2025-2030中国储能电站行业市场深度分析及前景趋势与投资研究报告
- 2025年标准租房合同范本
- 三元空间下个人化IP综艺《灿烂的花园》叙事与价值研究
- 2025届安徽省池州市普通高中高三教学质量统一监测政治试卷含、答案
- 《汽车博览会》名师课件2
- 学校食堂“三同三公开”制度实施方案
- 海南2025年海南热带海洋学院招聘113人笔试历年参考题库附带答案详解
- 2024-2025学年人教版(2024)七年级英语下册Unit 6 rain or shine Section A 2a-2e 教案
- 比较文学形象学-狄泽林克
- 商业地产运营管理规章制度
评论
0/150
提交评论