- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅述常见排序算法实现原理及性能优化
浅述常见排序算法实现原理及性能优化
【摘要】随着计算机技术的快速发展,企业和用户对软件的要求不再是仅仅停留在满足基本需求。在此基础之上,企业和用户希望软件能够具有更好地健壮性和更高的性能。目前,计算机程序语言不断更新换代,程序员在编写代码时,透明度越来越高,可能表面上,但是却不了解底层的实现。通过使用Java编程语言,研究基础的几个排序算法的实现原理,并且讨论如何提高排序算法的性能。
【关键词】排序算法 高性能 Java
1行业背景
随着计算机技术和网络技术的高速发展,如今越来越多行业都希望借助计算机的能力进行发展,这也就衍生出了互联网行业和软件行业的急速扩张。目前市场上需要大量的计算机人才,并且薪资待遇都很可观。除了计算机相关专业人才,其他专业的人才同样大量地投入IT市场。为了适应目前膨胀的IT环境,计算机编程语言也从最初的指令语言,汇编语言发展到目前各种各样的高级语言。
高级语言的出现使得人们经过短时间的培训就能够进行简单的软件开发,所以现在大家戏称普通程序员为“码农”。举个简单的例子,在Java语言中,简单的Arrays.sort()方法,就可以对一个数组进行排序。但是这句代码的背后隐藏着什么,它是如何实现的,它的性能如何,对于使用它的人来说可能未必清楚。
本文将通过Java语言对常见的排序算法的实现原理进行剖析,介绍不同的排序算法的适用场景和性能高低。
2 Java语言介绍
Java语言是一种开源的高级编程语言,封装性很强。Java代码最终会编译成class文件,在Java虚拟机上执行的,所以Java是不受操作系统的限制的,具有跨平台特性,是目前业界非常流行的一门语言。
由于Java是一门高级程序语言,所以使用Java的程序员可以调用很多Java基础包中或是其他人编写的工具类中很简单的方法完成较为复杂的功能。比如在上一节提到的对数组排序的方法。Java语言令软件开发的门槛降低了很多,使更多的人可以快速成为Java开发者。
3常用排序算法简介
3.1冒泡排序
冒泡排序是一个相当经典的排序算法,因为它更接近于人类直观的排序方式。它的排序思想如同它的名字,通过两两交换,将数字像水中的泡泡一样,有序地冒出来。它的最佳时间复杂度是O(n^2)。
3.2快速排序
快速排序虽然名为“快速”,但它未必是最快的排序算法,因为在不同的场景下,排序算法的性能是会受到影响的。但总体上来讲,快速排序的性能还是不错的。它采用了分而治之和递归的思想,使数组不会被多次循环嵌套遍历,在多数场景下,会大大提升排序的效率和性能。它的最佳时间复杂度为O(nlgn)。
3.3插入排序
插入排序不能说是一个非常好的排序方法,因为它的思想较为古板,但却非常好理解。他将数组中的数字分为有序部分和无序部分,不断从无序部分将数据插入有序部分中,并且插入后依然有序,这就需要每次都找到数据要插入的位置。如果数组本来就是有序的,那么此时的复杂度为O(n);如果数组本来是倒序的,那么插入排序的时间复杂度就为O(n^2)。插入排序较适应于元素少的数组进行排序。
3.4选择排序
选择排序应该是最为简单直观的排序方法了,它每次都遍历数组,从中选择出最大(最小)的元素,放在数组的第一位,直到所有元素全部排序完成。选择排序在不同的场景下都会执行相同次数的遍历,所以性能不是很高。它的时间复杂度是O(n^2)。
4排序算法原理剖析
以上排序方法中,插入排序和选择排序的原理都?^为直观,本文不对其进行过多的介绍。下面主要对冒泡排序和快速排序算法进行深度地剖析。
4.1快速排序原理研究
快速排序由于时间复杂度为O(nlgn),排序效率较高,因此经常被采用,再加上快速排序的思想――分治法也非常实用,因此很多知名软件公司,如腾讯、微软都会在笔试或面试中对“快速排序”进行提问。
快速排序的基本思想是:
1.先从数列中取出一个数作为基准数。
2.将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
以下是快速排序的算法模拟过程,待排序数组如下:
首先定义变量:i,j,X,其中i是指向数组起始位置的游标值,j是指向数组末尾的游标值。X为基准数。
(1)初始状态下:i=0;j=9;X=72。
(2)从数组末尾开始找比基准数小的数,找到游标位置在8的时候,值47小于基准值72。此时将0位置的数置为47,i加1。此时数组的8位置被空了下来,就要从左边开始找比基准数大的数字去填充8位置。此时找到位置3的值86大于基准值72。这时就将8位置的值置为86,j减1。
(3
您可能关注的文档
- 浅述市政道路污水管顶管施工.doc
- 浅述市政道路沥青混凝土路面常见病害及预防治理.doc
- 浅述市政道路沥青平整度质量控制.doc
- 浅述市政道路沥青混凝土路面施工.doc
- 浅述市政道路水泥稳定层施工技术.doc
- 浅述市政道路水泥稳定碎石裂缝处理.doc
- 浅述市政道路沥青加铺施工技术.doc
- 浅述市政道路沥青混凝土路面施工技术.doc
- 浅述市政道路沥青混凝土路面施工技术关键点.doc
- 浅述市政道路沥青混凝土路面施工质量控制.doc
- 2025至2030全球及中国订单管理软件行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030国内液晶显示屏行业市场发展分析及竞争策略与投资发展报告.docx
- 2025至2030港口设备市场前景分析及细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030量子加密通信行业发展现状及投资前景战略报告.docx
- 2025至2030中国音乐合成器行业运营态势与投资前景调查研究报告.docx
- 2025至2030中国液压行业市场发展现状及竞争格局与投资机会报告.docx
- 2025至2030中国异戊橡胶行业运营态势与投资前景调查研究报告.docx
- 2025至2030帕西肽行业市场占有率及有效策略与实施路径评估报告.docx
- 2025至2030全球及中国超收敛集成系统行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030尖齿铣刀行业市场占有率及有效策略与实施路径评估报告.docx
最近下载
- 智能车辆故障诊断维修手册.doc VIP
- 安徽省高中学业水平测试各科(语数英)试题及答案 .pdf VIP
- 2025至2030中国糖尿病食品行业市场发展分析及前景趋势与行业深度研究及发展前景投资评估分析.docx VIP
- 2025年水务企业运营管理手册.docx VIP
- 房屋市政工程施工安全日志(填写要求).docx
- 基于深度学习的家蚕病害识别.pdf VIP
- DCS受电方案(1)_原创精品文档.pdf VIP
- ZL50装载机工作装置设计及说明书.doc VIP
- 西南民族大学《解剖生理学》2021-2022学年第一学期期末试卷.doc VIP
- 2024-2025学年天津市河西区七年级(上)期末数学试卷含答案.pdf VIP
原创力文档


文档评论(0)