Java学习笔记:2022年1月13日~18日排序专题汇编

Java学习笔记:2022年1月13日~18日排序专题汇编

摘要:我在2022年的1月13日到一月18日期间进行了十种排序的学习,为了更加简洁明了的展现这些排序,我决定把它们写在一篇笔记中,以便日后查阅的时候能够一次性复习

一.前言

​ 我们在很多地方存在排序行为,比如按照成绩进行排名,按照身高进行排名等等…而在算法中,排序的意义不仅仅止步于对某些事物进行排名,排序可以让一个无序的数组变得有序,进而在安置查找的时候让这个数组使用二分查找的方式,有效降低算法的时间复杂度,排序代码的书写在算法比赛中也具有非凡的意义,有些算法需要你自己书写排序算法进行打表,一个高效的排序算法有助于你算法的整体成绩。因此,排序在程序员群体中越来越重要,就好比西部抢手的对决,谁拔枪快,谁就胜利,排序就是程序员的拔枪,是程序员的居合,我们需要熟悉并能够快速的书写出排序算法。接下来我将介绍十种重要的排序方法,要想成为一个比较优秀的程序员,首先就要掌握这十种重要的排序方法,掌握好之后,我们就可以像亚瑟摩根一样,不,像布兰迪一样拎着四袋黄金回家了(但愿吧)。

二.排序算法

​ 排序算法主要分为如下十种,在这里列出他们的各种评估参数,哪种排序算法有什么优势有什么缺点,这样列出一目了然,点击相应的排序算法名可以跳转链接,进入到其详细的解释中去。

排序算法平均时间复杂度最好情况最坏情况空间复杂度排序方式稳定性
冒泡排序 O ( n 2 ) O(n^2) O(n2) O ( n ) O(n) O(n) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)In-place稳定
选择排序 O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)In-place不稳定
插入排序 O ( n 2 ) O(n^2) O(n2) O ( n ) O(n) O(n) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)In-place稳定
希尔排序 O ( n l o g n ) O(nlogn) O(nlogn) O ( n l o g 2 n ) O(nlog^2n) O(nlog2n) O ( n l o g 2 n ) O(nlog^2n) O(nlog2n) O ( 1 ) O(1) O(1)In-place不稳定
归并排序 O ( n l o g n ) O(nlogn) O(nlogn) O ( n l o g n ) O(nlogn) O(nlogn) O ( n l o g n ) O(nlogn) O(nlogn) O ( n ) O(n) O(n)out-place稳定
快速排序 O ( n l o g n ) O(nlogn) O(nlogn) O ( n l o g n ) O(nlogn) O(nlogn) O ( n 2 ) O(n^2) O(n2) O ( l o g n ) O(logn) O(logn)In-place不稳定
堆排序 O ( n l o g n ) O(nlogn) O(nlogn) O ( n l o g n ) O(nlogn) O(nlogn) O ( n l o g n ) O(nlogn) O(nlogn) O ( 1 ) O(1) O(1)In-place不稳定
计数排序
桶排序
基数排序 O ( n × k ) O(n×k) O(n×k) O ( n × k ) O(n×k) O(n×k) O ( n × k ) O(n×k) O(n×k) O ( n + k ) O(n+k) O(n+k)Out-place稳定

PS:本文在听课学习的基础上还参考了文章:十大经典排序算法 ,这篇文章好的很,把所有的排序都讲明白了,如果不想看我写的笔记可以直接看它的,非常有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值