一、Java中常用的排序算法

本文详细介绍了排序算法的种类,包括稳定排序与不稳定排序、内排序与外排序,并列举了十大内部排序算法,如堆排序、冒泡排序、快速排序和归并排序等。针对不同排序算法的性能进行了比较,强调了在不同场景下如何选择合适的排序算法。此外,还对每种排序算法进行了简要说明,帮助读者理解其工作原理和适用范围。


以下是本篇文章正文内容,如有错误麻烦请指出。 谢谢 !!!


一、简介

1、稳定排序与不稳定排序

(1)稳定排序:排序前与排序后相同的元素(排序码)排序顺序保持不变。
(2)不稳定排序:排序前与排序后相同的元素(排序码)排序顺序发生变化。

2、内排序与外排序

(1)内排序:排序过程完全依靠内存进行排序完成。
(2)外排序:排序过程中需要依靠外部存储才能完成排序。

3、十大内部排序算法

(1)选择排序
直接选择排序、堆排序
(2)交换排序
冒泡排序、快速排序
(3)插入排序
直接插入排序、折半插入排序、Shell排序
(4)归并排序
(5)桶式排序
(6)基数排序

4、十大内部排序汇总

重点掌握的排序:堆排序、冒泡排序、快速排序、归并排序
在这里插入图片描述

4、各种内部排序方法性能比较

(1)从平均时间而言:快速排序最佳。但在最坏情况下时间性能不如堆排序归并排序
(2)从算法简单性看:由于直接选择排序、直接插入排序和冒泡排序的算法比较简单,将其认为是简单算法。对于Shell排序、堆排序、快速排序和归并排序
算法,其算法比较复杂,认为是复杂排序。
(3)从稳定性看:直接插入排序、冒泡排序和归并排序时稳定的;而直接选择排序、快速排序、 Shell排序和堆排序是不稳定排序
(4)从待排序的记录数n的大小看,n较小时,宜采用简单排序;而n较大时宜采
用改进排序。

5、排序算法的选择

(1)若n较小(如n≤50),可采用直接插入或直接选择排序。 当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插入,应选直接选择排序为宜。
(2)若文件初始状态基本有序(指正序),则应选用直接插入、冒泡或随机的快速排序为宜;
(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序

二、排序算法介绍

1、堆排序

在这里插入图片描述
在这里插入图片描述

2、冒泡排序

在这里插入图片描述

3、快速排序

在这里插入图片描述

4、归并排序

在这里插入图片描述

5、(简单)选择排序在这里插入图片描述

6、(直接)插入排序

在这里插入图片描述

7、计数排序

在这里插入图片描述

8、Shell排序在这里插入图片描述

9、基数排序在这里插入图片描述

10、桶排序

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值