各种排序算法的思想以及时间复杂度,空间复杂度总结

本文深入探讨了插入排序、交换排序、选择排序、归并排序、基数排序等经典排序算法,包括直接插入排序、希尔排序、冒泡排序、快速排序、堆排序、直接选择排序及堆排序等。详细分析了每种排序算法的时间复杂度、空间复杂度及稳定性,针对不同数据规模和排序需求提供了适用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.插入排序:每次待排记录插入前面已经排好队列适当位置
①.直接插入排序
直接排序法好情况下(待排序列已按关键码有序)每趟排序只需作1次比较而需要移动元素n元素比较次数n-1移动次数0
情况下(逆序)第i元素必须和前面元素进行比较i次移动数i+1总共比较次数 比较多写出来了
总结种稳定排序方法时间复杂度O(n^2)排序过程只要辅助空间空间复杂度O(1)
②.希尔排序
缩小增量排序直接插入排序种改进;分组插入方法
总结稳定排序方法时间复杂度O(n^1.25)空间复杂度O(1)
2.交换排序
①.冒泡排序
情况下正序只要比较行了复杂度O(n)
情况下逆序要比较n^2次才行复杂度O(n^2)
总结:稳定排序方法时间复杂度O(n^2)空间复杂度O(1)当待排序列有序时比较好

②.快速排序
通过趟排序待排记录分割成独立两部分部分记录关键字均比另部分关键字小再分别对部分记录继续进行排序序列有效
总结所有同数量级O(nlogn)排序方法快速排序性能种方法待排序列无序时算法时间复杂度O(nlogn)时间复杂度O(n^2)空间复杂度O(nlogn)
 
3.选择排序
①.直接选择排序      和序列初始状态无关
 总结:时间复杂度O(n^2)无论好还坏
②.堆排序
 直接选择排序改进
总结:时间复杂度O(nlogn)无论好还坏情况下都O(nlogn)
 
4.归并排序
总结:时间复杂度O(nlogn)空间复杂度O(n)
 
5.基数排序
按组成关键字数位值进行排序分配排序需要进行排码值间比较能够进行排序
总结:时间复杂度O(d(n+rd))
 
总总结:
 
n比较小时候适合 插入排序选择排序
 
基本有序时候适合 直接插入排序冒泡排序
 
n关键字位数较少时适合 链式基数排序
 
n时候适合 快速排序 堆排序 归并排序
 
无序时候适合 快速排序
 
稳定排序:基数排序冒泡排序直接插入排序折半插入排序归并排序
稳定:         快速排序希尔排序堆排序直接选择排序
复杂度O(nlogn):快速排序 堆排序 归并排序 辅助空间(大 次大):归并排序 快速排序 好坏情况样:简单选择(n^2)堆排序(nlogn)归并排序(nlogn) O(n):插入排序 冒泡排序



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值