常见排序算法多线程实现与比较_范兴国.pdf
《常见排序算法多线程实现与比较_范兴国.pdf》由会员分享,可在线阅读,更多相关《常见排序算法多线程实现与比较_范兴国.pdf(8页珍藏版)》请在咨信网上搜索。
1、宝鸡文理学院学报(自然科学版),第 卷,第期,第 页,年 月 (),:常见排序算法多线程实现与比较范兴国,卫泽刚,张豪,张小丹,刘飞,钱郁(宝鸡文理学院 物理与光电技术学院,陕西 宝鸡 )摘要:目的对目前常用排序算法进行多线程实现,并运用不同类型数据集进行比较研究,以充分利用现代计算机多核处理器优势,有效提高大规模数据排序操作。方法首先简要介绍目前常用的 种排序算法的基本原理,然后基于 语言采用多线程模式进行代码实现,最后用种不同类型测试数据进行详细比较,分析这些排序算法的优缺点及适用范围。结果对于同一个排序方法,多线程可以明显提高排序效率,但相同规模数据条件下,不同的数据类型影响排序效率。结
2、论多线程排序能够充分利用计算机多核资源,提高排序效率。对于大规模数据,多数排序方法都可以快速得到排序结果。关键词:排序算法;多线程;快速排序;排序效率;数据处理中图分类号:文献标志码:文章编号:(),(,):,:;随着信息技术的不断发展,数据采集设备日益增多,数据规模也在不断增加,如何高效处理数据成为研究的热门问题之一。在现实生活和实际软件开发过程中,由于数据种类较多、数量较大,从而导致处理起来会耗费大量的物力、财力和人力,因此,我们更希望处理有规则、有顺序的数据,可以极大方便后续的数据分析。在处理数据具体过程中,排序成为很多算法或软件的首要步骤,收稿日期:,修回日期:基金项目:陕西省自然科学
3、基础研究计划一般项目();陕西省教育厅专项科学研究计划项目();陕西省自然科学基础研究计划重点项目();宝鸡文理学院 年研究生创新科研项目();宝鸡文理学院第十七批校级本科教学改革研究项目()作者简介:范兴国(),男,山东淄博人,在读硕士研究生,研究方向:生物信息学 :通讯作者:张小丹(),女,山西运城人,实验员,硕士,研究方向:计算生物学 :已成为计算机科学领域中最基础的操作之一。排序就是通过一定的规则将无序数据重新排列的操作。排序后的数据有明显的顺序性,可以呈现一定的规律性。因此,经过排序处理后的数据便于筛选和处理,提高了后续分析效率。排序算法就是按照给定要求对无序数据进行排列的方法。研究
4、者们已开发出一系列排序算法,每种排序算法各有优缺点,不同的排序算法适合不同的数据情况。针对处理数据的特点,如何选择合适的排序算法是每个数据分析师或软件开发者需要面对的首要问题。而且,随着芯片制造技术的发展,处理器生产工艺不断进步,如今的笔记本电脑、台式机乃至商用服务器都是多核处理器,多核处理器上的多线程能让多段程序逻辑同时工作,可以真正发挥出多核处理器的优势,而达到充分利用计算机处理器的目的。为此,本文详细阐述了常用经典排序算法的基本思想,并对每个算法进行多线程实现,然后采用不同的数据类型进行详细比较,分析了每种算法的排序效率和适用情况,希望对排序算法使用者提供参考依据。常见排序算法介绍 冒泡
5、排序冒泡排序是排序算法中最为基础、最为简单的排序算法。排序思路是在一组待排序元素中,每次从第一个元素进行扫描,比较个相邻元素的大小,如果前一个数值大于后一个数值,就将两者进行交换。经过一趟比较后,整体上数值较大的元素往后移动,数值较小的元素往前移动。然后重复上述步骤,直到某一趟排序过程中没有任何数值发生交换,则排序结束。在排序过程中,数值较大的数据向下沉,数值小的数据往上浮,就像气泡漂浮一样,于是将这种排序算法形象地称为冒泡排序。由于排序过程中数值相等的元素不进行交换,相同元素的前后顺序仍未发生改变,因此冒泡排序是稳定排序。冒泡排序最小时间复杂度为(),即排序过程不发生浮动,待排序数据从小到大
6、已排列好,扫描一次即可完成排序,平均时间复杂度和最大时间复杂度均为()。快速排序快速排序是对冒泡排序法的一种改进,首先从数据中选择一个值作为参考值(通常取第一个数据),然后将其他数据与参考值进行比较,将小于或等于参考值的数据放在参考值的左边,大于参考值的数据放在参考值的右边,即完成一趟排序。然后再对左侧数据和右侧数据做同样操作,直到所有数据排序完毕。快速排序是不稳定的,平均时间复杂度和最小时间复杂度均为(),最大时间复杂度为()。选择排序选择排序首先遍历所有数据,找到最小值并与第一个数据进行交换,然后将第二个数据与剩余数据的最小值进行交换,以此类推,直到所有数据排序完毕。选择排序是稳定排序,在
7、排序过程中,无论数据顺序如何,都需从前往后遍历所有数据找到最小值,因此最小时间复杂度、最大时间复杂度和平均时间复杂度均为()。堆排序堆排序()是利用了堆数据结构而设计的一种排序算法。堆是一种完全二叉树,分为大顶推和小顶堆,大顶堆中每个结点的值都大于或等于其左右孩子结点的值,小顶堆中每个结点的值都小于或等于其左右孩子结点的值。堆排序的基本思想是:首先将所有待排序数据构造成一个大顶堆,此时,整个数据的最大值就是堆顶的根节点。然后将其与无序数据的最后一个元素进行交换,此时末尾就为最大值。再次调整除去最大元素后的无序序列为一个大顶堆,将堆顶元素与无序数据末尾元素交换,得到第二大元素。重复以上步骤,直到
8、所有数据排序完毕。堆排序是是一种不稳定的排序算法,其平均时间复杂度为在排序过程中,无论原始数据顺序如何,堆排序都要对数据进行比较,因此最小时间复杂度、平均时间复杂度和最大时间复杂度均为()。插入排序插入排序就是将数据插入到已经排好序的有序数据中从而完成对数据的排序。排序过程类似于对扑克牌进行排序,每次加入一个元素,将其插入到有序序列的适当位置,然后再加入一个新元素,重复上述操作,直到所有元素均为有序。插入排序是稳定排序,当待排序为序数组时,扫描一遍数据即可完成排序,因此最小时间复杂度为(),平均时间复杂度和最大时间复杂度均为()。希尔排序希尔排序是对插入排序方法的改进,又称为“缩小增量排序”。
9、希尔排序首先将原始数据按其索引位置,并根据一定的增量(初始增量一般为数据量大小的一半)进行两两分组,对每组数据使用插入排序算法进行排序。然后减小增量(增量第期范兴国 等常见排序算法多线程实现与比较一般为上一次增量的一半),重复以上步骤再次进行排序,直到增量为时,排序完毕。希尔排序是不稳定排序,其时间复杂度依赖于增量的选择,一般而言,其最小时间复杂度为(),最大时间复杂度为()。对于平均和最大时间复杂度,因增量的取法不同而不同。归并排序归并排序体现了分治法的思想,即先划分数据,再合并数据。归并的含义就是将个或个以上的有序数据合并成一个新的有序数据。归并排序具体过程为:将原始数据分成诸多长度为二的
10、数组,然后对其进行排序,再将个或个以上的有序数据序列合并 成 一个 新 的 有序数 据序列,直到所有数据合并完毕。归并排序是稳定排序,在排序过程中无论原始数据顺序如何,都需要进行划分与合并,因此最小时间复杂度、平均时间复杂度和最大时间复杂度均为()。计数排序计数排序首先创建一个新数组作为计数数组,然后遍历原始数据,统计原始数据中每个元素值出现的次数,记录到计数数组第项。这样遍历一遍原始数据,便将数据中每个数值出现的次数有序的记录下来,然后将计数数组每一项的值按个数进行输出,即为排序结果。对于计数排序,无论原始数据顺序如何,都需要遍历一遍数组,因此最小时间复杂度、平均时间复杂度和最大时间复杂度均
11、为()。桶排序桶排序是计数排序的扩展版本,计数排序可以看成每个桶只存放相同的元素,而桶排序每个桶存放一定范围的元素,这里的“桶”可以理解为一个数据范围。桶排序具体过程为:将待排序数据分散放到多个桶里,其中前一个桶的最大值小于后一个桶的最小值。然后对每个桶中的元素进行排序,最后将每个桶按序输出,即可得到排序结果。桶排序的最大时间复杂度为()。基数排序基数排序是桶排序的一种变型,其原理是将每个数字按照位数进行划分,相当于按照位数来分配桶,再对位数相同的数据进行排序操作。基数排序具体排序过程为:首先根据个位上数字的大小进行第一轮排序,得到第一轮排序结果,再按十位上的数字大小对其进行排序,以此类推,直
12、到最高位排序完成后,即可得到最终的排序结果。假设原始数据最大位数为,无论数组顺序如何,都要对每个位数排序一遍,因此基数排序的最小时间复杂度、平均时间复杂度和最大时间复杂度均为()。排序 排序 是一种面向真实数据稳定高效的排序算法,年由 设计 并使用 语言实现了 排序算法。现实中遇到的很多待排序数据,其中有部分连续数据已是有序序列,排序就是利用了这一特点,同时结合归并排序和插入排序而设计的一种混合排序算法。称这些已经有序(顺序或逆序)的数据块为“”,可以理解为个数据“分区”。首先分析待排序数据,根据其数据特点进行数据分区,同时针对数据分区,按规则进行合并,每次归并会将个分区合并为个分区,直到所有
13、数据合并为个分区,即可完成排序。排 序 算 法 的 时 间 复 杂 度 最 小 情 况 为(),平均和最大时间复杂度均为()。排序算法的多线程实现多线程排序是利用计算机的多核资源进行排序,如果将上述每个算法用单线程实现,一般情况下,在双核处理器上运行只利用了计算机 的性能,在四核处理器上运行只利用了 的性能。而多核处理器上的多线程模式可以同时让多段程序一起工作,进而真正发挥出多核处理器的优势,达到充分利用处理器的目的,极大提高了程序运行效率。因此,为充分利用现在的计算机多核资源,本文设计并实现了利用多线程来实现每个排序方法。排序算法的多线程实现主要分为个阶段,如图所示,第一阶段是划分数据,以线
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常见 排序 算法 多线程 实现 比较 兴国
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。