【AL】Sort algorithm

TangBao~ / 2023-08-31 / 原文

I Base class of sort al

Insert

Swap

Select

II compare  diff al[考点I]

名称 时间复杂度 空间复杂度 适用结构 优点 缺点 备注
直接插入

O(n)~O(n^2)

O(1) 基本有序线性表 稳定   [1]
折半插入 O(n)~O(n^2) O(1)  基本有序线性表  稳定    [2] 
希尔排序 O(n^1.3)~O(n^2) O(1)      不稳定 [3]
冒泡排序

O(n)~O(n^2)

O(1) 基本有序线性表  稳定   [4]
快速排序 O(nlogn)

O(logn)~O(n)

随机线性序列   不稳定 [5]
简单选择 O(n^2)  O(1)  基本有序线性表   不稳定 [6]
堆排序           [7] 
归并排序

O(nlogn)

O(n )

没有区别 稳定   [8]
基数排序 O(d(r+n))  O(r) 没有区别 稳定   [9]

 备注:

  [1] 直接插入排序的本质是寻找当前元素在排序子集中的位置

  [2] 折半算法的应用优化了比较次数,使其从$O(n^{2})->O(nlog_{2}n)$

  [3] 希尔排序本质是通过选取d,即增量序列将集合划分成子集,而其在划分过程中将同值元素划分到不同子集的过程,导致其不稳定

  [4] 冒泡排序本质上每一轮都将序列中的一个元素放到了最中位置(最大/最小),其与插入排序的区别是每一轮结束都必有一个元素在其最终位置

  [5] 快速排序需要递归函数栈,故其最坏情况下,空间利用率达到O(n)

  [6] 选择排序的本质是选取元素序列中最小/最大的元素

  [7] 简单选择排序与冒泡排序的区别,冒泡排序是减少了比较次数,而简单选择排序是减少了交换次数。而比较次数与序列初始状态无关。故简单选择的时间复杂度受序列影响较小

内外部排序算法比较与应用[考点II]

III code

IV problem

  1. [2022年统考]二路归并操作的功能是:将两个有序表合并成一个新的有序表

  考察了最基本的定义。所以最基本定义不能不认识。

V expandtion