十大排序算法总结(附java实现)

定义

  排序 是计算机内部经常进行的一项操作,目的是将一组无序的序列调整为一组有序的序列。Excel中将数据按照名称进行升序降序排列就是一种常见的排序操作。

相关概念

  • 时间复杂度:反映操作次数(计算量)随数据长度的变化规律,是数据规模的函数,用 O ( ⋅ ) O(·) O()表示。
  • 空间复杂度:用来度量执行算法所需的存储空间随数据规模的变化情况,也用 O ( ⋅ ) O(·) O()表示。
  • 稳定性:对于两个相等的元素 a a a b b b,如果排序算法不会改变他们的相对位置,则称排序算法是稳定的,否则这个算法就是不稳定的。

分类

  根据排序过程是否需要使用外部存储空间可以将排序算法分为内部排序外部排序

  根据排序算法的复杂度和是否是基于对元素进行比较进行排序又可以将算法分为非线性时间比较类排序线性时间非比较类排序

  • 非线性时间比较类排序:顾名思义就是根据比较来确定元素的排列顺序的排序算法,时间复杂度最低为 ( O ( n l o g n ) ) (O(nlogn)) (O(nlogn))
  • 线性时间非比较类排序:不通过比较元素的相对大小来确定元素的排列顺序的算法,时间复杂度可以突破对数级别以线性时间运行。

比较

  表中 k k k 表示所需的桶(bucket)的个数——对于计数排序、桶排序和基数排序三种排序算法需要额外的**“buckets”**来辅助排序。

具体算法介绍

下面具体介绍了每一种排序算法:

(1) 简单选择排序

(2) 冒泡排序

(3) 插入排序

(4) 希尔排序

(5) 归并排序

(6) 快速排序

(7) 堆排序

(8) 计数排序/桶排序/基数排序

  所有的排序都默认是按照从大到小的顺序进行排序,完整的代码可以在我的github上下载。此外,文章中的所有演示动图都来自于互联网。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值