数据结构-排序(一)绪论

本文详细介绍了排序的基本概念,为排序的绪论,总结了各个排序的时间复杂度、空间复杂度和稳定性!
Let’s go!🏃‍♂️

👉数据结构-排序(二)插入排序
👉数据结构-排序(三)希尔排序
👉数据结构-排序(四)冒泡排序
👉数据结构-排序(五)快速排序
👉数据结构-排序(六)简单选择排序
👉数据结构-排序(七)堆排序

数据结构-排序(一)绪论

排序(Sort) ,就是重新排列表中的元素,使表中的元素满⾜按关键字有序的过程。

输入: n个记录 R 1 , R 2 , … , R n R_1, R_2,…, R_n R1,R2,,Rn,对应的关键字为 k 1 , k 2 , … , k n 。 k_1, k_2,…, k_n。 k1,k2,,kn

输出: 输⼊序列的⼀个重排 R 1 ʹ , R 2 ʹ , … , R n ʹ , R_1ʹ, R_2ʹ,…, R_nʹ, R1ʹ,R2ʹ,,Rnʹ使得有 k 1 ʹ ≤ k 2 ʹ ≤ … ≤ k n ʹ k_1ʹ≤k_2ʹ≤…≤k_nʹ k1ʹk2ʹknʹ(也可递减)

排序算法的评价指标: ①时间复杂度;②空间复杂度

算法的稳定性: 若待排序表中有两个元素 R i R_i Ri R j R_j Rj,其对应的关键字相同即 k e y i = k e y j key_i= key_j keyi=keyj,且在排序前的前⾯ R i R_i Ri R j R_j Rj,若使⽤某⼀排序算法排序后, R i R_i Ri 仍然在 R j R_j Rj的前面,则称这个排序算法是稳定的,否则称排序算法是不稳定的。

分类:

  • 内部排序:数据都在内存里 (关注如何使算法时、空复杂度更低 )
  • 外部排序:数据太多,无法全部存在内存里 (还要关注如何使读/写磁盘次数更少)
算法时间复杂度空间复杂度稳定性
最好最差平均
直接插入排序 O ( n ) O(n) O(n) O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)稳定
折半插入排序 O ( n ) O(n) O(n) 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 1.25 ) ~ O ( 1.6 n 1.25 ) O(n^{1.25})~O(1.6n^{1.25}) O(n1.25O1.6n1.25 O ( 1 ) O(1) O(1)不稳定
冒泡排序 O ( n ) O(n) O(n) O ( n 2 ) O(n^2) O(n2) O ( n 2 ) O(n^2) O(n2) O ( 1 ) O(1) O(1)稳定
快速排序 O ( n l o g 2 n ) O(nlog_2n) O(nlog2n) O ( n 2 ) O(n^2) O(n2) O ( n l o g 2 n ) O(nlog_2n) O(nlog2n) O ( l o g 2 n ) O(log_2n) O(log2n)不稳定
简单选择排序 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 l o g 2 n ) O(nlog_2n) O(nlog2n) 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)不稳定
归并排序 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 ( n l o g 2 n ) O(nlog_2n) O(nlog2n) O ( n ) O(n) O(n)稳定
基数排序 O ( d ( n + r d ) ) O(d(n+rd)) O(d(n+rd)) O ( d ( n + r d ) ) O(d(n+rd)) O(d(n+rd)) O ( d ( n + r d ) ) O(d(n+rd)) O(d(n+rd)) O ( n + r d ) O(n+rd) O(n+rd)稳定

时间空间复杂度网站推荐:https://www.bigocheatsheet.com/
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值