摘要:介绍了快速排序的概念;分析了传统快速排序的弊端,递归深度较大会导致算法效率低下;提出了一种基于关键值为序列平均值的快速排序算法,阐述了算法的详细运行过程,并分析了其优势;通过实验验证了基于关键值为序列平均值的快速排序算法性能优越。
加入收藏
快速排序算法是一种优秀的排序算法,它的平均时间复杂度为O(n*log2n),与冒泡排序和插入排序相比较而言,已经有了很大的提高,n指待排序数据的规模,n越大,快速排序的优势越明显[1]。
快速排序的过程第一步是选择一个关键值,将排序序列进行划分,分成两个子序列,然后对这两个子序列再执行递归的快速排序,直至子序列中只含有一个元素为止。由此可见,选择关键值至关重要,关键值不同会导致划分的子序列的规模不同,这将严重影响快速算法的效率[2]。
传统的快速排序算法一般都会选择排序序列的第一个元素作为关键值,如果此时待排序序列已经基本有序,则选择第一个元素作为关键值会使递归的层次达到最大,增加了算法的时间复杂度。本文提出了基于关键值为序列平均值的快速排序算法,其以排序序列的平均值作为关键值,这会使递归的层次达到最小,使快速算法的效率更优[3]。
1、传统的快速排序算法
对于待排序的序列{a1,a2,a3……an},传统的快速排序算法选择排序序列的第一个元素a1作为关键值(pivot),假设排序是升序排序,序列会被pivot分成两个部分:{子序列1},pivot,{子序列2},子序列1中的值都小于等于pivot的值,子序列2中的值都大于等于pivot的值。
这个过程称为划分,划分算法的伪代码如表1所示:
表1划分算法伪代码
在序列划分执行完之后,要对两个子序列进行快速排序,这里的关键是计算出两个子序列的开始和结束位置,然后进行递归的快速排序,其对应的快速排序算法伪代码如表2所示:
表2快速排序算法伪代码
这种算法的缺点在于,当需要排列的序列元素基本有序时,递归的层次偏高,影响算法效率。设快速排序算法对应的函数的名称为qsort(序列,序列首元素位置,序列末元素位置),则对一个需要升序排列的序列a[]={1,2,3,4,5,6,7}执行快速排序的执行过程qsort(a,0,6)如图1所示:
图1qsort(a,0,6)的执行过程
图1中递归调用的深度为6,如果有n个元素,则对应递归深度为n-1,算法的时间复杂度为O(n2),此时快速排序的效率达到了最差[4]。
2、改进的快速排序算法
传统快速排序算法在序列基本有序的情况下效率较差,这是由于关键值选择不合理而导致的,因为首元素并不能把一个序列划分成两个大致相等的子序列,而采取序列平均值作为关键值进行划分,效果会优越得多[5]。
采取序列平均值作为关键值进行划分,也需要求得划分的位置,划分的算法和传统的快速排序算法相似,但也有不同,这不同之处就在于:序列平均值并不一定会出现在序列中,所以得到的两个子序列的位置计算需要额外的进行处理[6]。
比如对于序列{1,2,3,4,6},其平均值为3.2,按照划分算法得到返回的位置值为2,也就是值3对应的位置,具体的过程如图2,共有5步:
图2划分序列1
很明显此时3.2并不是序列的元素之一,所以其划分的子序列不是{1,2}和{4,6}了,而是{1,2,3}和{4,6}。
对于序列{6,2,3,4,1},其平均值为3.2,按照划分算法得到返回的位置值为3,也就是值4对应的位置,具体的过程如图3,共有7步:
图3划分序列2
很明显此时3.2并不是序列的元素之一,所以其划分的子序列不是{1,2}和{4,6}了,而是{1,2,3}和{4,6}。
如果序列平均值恰好出现在序列中,则跟传统的快速排序算法相似。
对于一个序列{a1,a2,a3……an},如果采取序列平均值对序列进行划分后,再进行递归的快速排序时,根据上述三种情况,子序列的范围可以由以下规则确定:令划分函数返回的位置为k,如果a[k]大于序列平均值,则两个子序列的范围是{a1,a2,a3……ak-1}和{ak,ak+1,ak+2……an};如果a[k]小于序列平均值,则两个子序列的范围是{a1,a2,a3……ak}和{ak+1,ak+2……an};如果a[k]等于序列平均值,则两个子序列的范围是{a1,a2,a3……ak-1}和{ak+1,ak+2……an}[7]。
划分好子序列后,再对子序列进行递归的快速排序即可,划分算法的伪代码如表3,和传统算法的划分类似,只有pivot值进行了修改,这里pivot值等于序列的平均值。
新快速排序算法伪代码如表3所示:
表3新快速排序算法伪代码
这种算法即便是对一个基本有序的序列进行排序,也能得到较好的效果。假设新快速排序算法对应的函数的名称为nqsort,那么对图1的序列进行快速排序的过程nqsort(a,0,6)如图4所示:
图4nqsort(a,0,6)的执行过程
图4中递归调用的深度为3,如果有n个元素,则对应递归深度约等于log2n,算法的时间复杂度为O(n*log2n),此时快速排序的效率得到了改善[8]。
3、实验分析
选定需要排序的序列的元素个数分别是q[i]={200,400,600,……,1800,2000},在matlab14.0环境下随机生成q[i]个元素进行升序排序,tqsort[i]为传统快速排序所耗费的时间,tnqsort[i]为改进的快速排序所耗费的时间,yi=(tqsort[i]-tnqsort[i])/tnqsort[i]为时间优化率,对于每个yi计算10次,取其平均值y平均为平均时间优化率,则y平均对应的趋势图如图5:
图5平均时间优化率
由图5可见,排序元素个数越多,改进的快速排序算法的优势也就越明显,对于2000个元素的排序序列,平均时间优化率已经超出6%[9]。
4、结论
快速排序是一种用递归实现的排序方法,关键在于对排序序列的划分,划分的子序列不同,算法的效率就会有很大的不同,本文所阐述的快速排序算法,没有使用序列首元素充当关键值,而是采用了序列平均值充当关键值,这会减少递归的深度,减低算法的时间复杂度[10]。
采用了序列平均值充当关键值的快速排序算法也有其不足之处,例如对于序列{1,2,3,4,5,10000}这样的序列进行以序列平均值充当关键值的快速排序,递归深度也会较大,下一步的算法改进方向是采用序列中位数对应数值作为关键值对序列进行快速排序[11]。
参考文献:
[1]秦玉平,马靖善.数据结构(C语言版)[M](第3版).北京:清华大学出版社,2015.
[2]石嵩,李宏亮,朱巍.阵列众核处理器上的高效归并排序算法[J].计算机研究与发展,2016,53(2):362-373.
[3]马靖善,秦玉平.一种改进的归并排序算法[J].渤海大学学报(自然科学版),2009,30(2):190-192.
[4]严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,2001.
[5]施伯乐.数据结构教程[M].上海:复旦大学出版社,2011.
[6]林建秋,韩静萍.C语言程序设计[M].北京:机械工业出版社,2014.
[7]严炜炜.科研合作中的信息需求结构与协同信息行为[J].情报科学,2016,34(12):11-16.
[8]卫星,张建军,石雷,等.云计算数据中心服务器数量动态配置策略[J].2015,37(08):2007-2013.
[9]左建安,陈雅.大数据时代的科学数据共享模式研究[J].新世纪图书馆,2014(03):32-35.
[10]颜云生,陶骏.基于AHP算法的电子书包评估系统[J].计算机系统与应用,2017(8):49-54.
[11]王瑞娜.基于嵌入式Linux的智能家居系统的研究与设计[J].廊坊师范学院学报,2017(17):34-38.
应沈静,方奇,陶骏,马利祥.快速排序教学探讨[J].科技风,2020(36):39-41.
基金:安徽省教育厅质量工程项目(2017jxtd145);安徽省科技厅重点研究与开发计划项目(201904a05020093);芜湖市科技项目(2019yf49)
分享:
大学生作为一个国家未来的翘楚和创新力量,培育其文化自信是至关重要的。“随着社会转型及多元文化选择的影响,大学生面临文化认同的迷茫和危机。”[1]一些大学生在面对西方文化的冲击、价值观多样化以及网络舆论混乱时,表现出文化自信的缺失。
2024-06-06为了能够实现新一代人工智能发展的战略目标[1,2],国内许多学校都开设了机器学习课程[3],也有较多文献报道了在本科生群体中开设《机器学习》的教学改革研究[4,5]。对分课堂最终可以形成教师精讲、学生内化、小组讨论、交流共享四个环节,可分为隔堂对分以及当堂对分两大模式。然而,在具体的实践过程中,课堂的环节过多可能会导致教师、学生出现应付的现象[9]。
2024-06-03在大数据时代背景下,会计行业面临着新的挑战和机遇。大数据技术可以帮助会计人员更好地进行财务信息的收集、分析和报告,提升会计工作效率和准确性,为企业财务决策提供更好的支持。大数据技术的广泛应用还能使企业从财务报表中获取更加丰富的信息,进而为管理决策提供更可靠的支持[1]。
2024-04-17课程是人才培养的核心要素,课程质量直接决定着人才培养的质量。教育部提出全面开展一流本科课程建设,树立课程建设新理念,因此要大力推进课程改革创新,消灭“水课”。合理科学、具有创新性的教学内容体现了前沿性与时代性,更能激发学生的学习热情,加大学习投入,科学“增负”才能培养出与时俱进的高素质复合型新工科人才[1,2,3]。
2024-04-17自14世纪牛津大学(University of Oxford)在书院制的基础上推行私人指导或导师制以来,本科生导师制以其个性化的指导、科研与教学融合、专业和职业与人生规划互补等优势,成为国内外许多高校进行本科生人才培养模式改革的重要路径。近年来,我国许多高校也开始全面推行本科生导师制。
2024-03-07师德,即教师的职业道德修养。随着时代和社会的发展,人们面对的诱惑和挑战越来越大。多年来高校教学实践表明,教育教学的关键在于师资队伍的建设,而师资队伍建设的核心是师德师风建设。教师师德师风建设的成效会直接影响到学生健全人格的养成。古人云:“德之不厚,行将不远”。
2024-03-05智能网联汽车(Intelligent Connected Vehicle,ICV)作为新一代信息通信及人工智能(Artificial Intelligence,AI)发展载体,已然成为现代科研领域的热门话题。为提高教学质量,满足智能网联人才需要,刘文晶等[1]提出智能网联方向“教、赛、学”一体化教学的可实施改革路径。
2024-03-04党的二十大报告中明确提出,坚定不移走中国特色社会主义法治道路,是立足我国基本国情、顺应我国经济社会发展要求的必然选择。习近平总书记强调,要全面推进科学立法、严格执法、公正司法、全民守法,密织法律之网,强化法治之力,坚定不移走中国特色社会主义法治道路。
2024-03-02“双高计划”首轮建设共有高水平学校建设单位56所,高水平专业群建设单位141所,按学校建设单位2个专业群,高水平专业群建设单位1个专业群计算,共建设国家级高水平专业群253个,对每个高水平专业群,国家给予了大量资金用于项目支持。高投入必然要求高产出,这就需要依靠科学的指标评价体系来把握和衡量。
2023-12-12革命文物是指以实现中华民族伟大复兴的奋斗历程为主线,见证近代以来中国人民争取民族独立、人民解放的伟大斗争,见证中国共产党领导中国人民救国兴国强国的伟大贡献的重要史迹、实物、代表性建筑等。加强革命文物保护利用,弘扬革命文化,传承红色基因,是全党全社会的共同责任。
2023-11-27我要评论
期刊名称:高等教育评论
期刊人气:1235
主办单位:中南财经政法大学高等教育评估与研究中心
出版地方:北京
专业分类:教育
邮发代号:2-2980
创刊时间:2013年
发行周期:半年刊
期刊开本:大16开
见刊时间:1-3个月
影响因子:1.371
影响因子:0.323
影响因子:0.307
影响因子:0.000
影响因子:1.435
您的论文已提交,我们会尽快联系您,请耐心等待!
你的密码已发送到您的邮箱,请查看!