常见的排序算法及分类对比

虽然在竞赛和编程语言中用到的排序算法主要是时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn) 的高效算法,但作为算法学习,我们要从简单到复杂,认识常见的排序算法,并理解其算法思想。本文列出几乎所有的排序算法并进行分类对比。

排序算法总表

以下是一个对比表格,涵盖几乎所有常用的排序算法:

名称 算法思想 平均时间
复杂度
最优时间
复杂度
最坏时间
复杂度
空间
复杂度
稳定排序 内排序 原地排序 比较排序 备注
冒泡排序 相邻交换,逐步冒泡 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) 可优化(如鸡尾酒排序),不适合大数据。
选择排序 每次选择最小/最大元素 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) 简单实现,适合小规模数据。
插入排序 构建局部有序序列 ( 像抓牌 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) 基于简单插入的排序,针对字符串可以折半插入。
希尔排序
Shell Sort
改进插入分组和逐步缩小间隔 O ( n 1.5 ) O(n^{1.5)} O(n1.5) O ( n log ⁡ n ) O(n \log n) O(nlogn) O
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值