【AL】Sort algorithm

发布时间 2023-08-31 09:11:32作者: TangBao~

I Base class of sort al

Insert

Swap

Select

II compare  diff al

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

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]
堆排序            
归并排序            
基数排序            

 备注:

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

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

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

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

  [5] 快速排序基于分治算法,其依靠选取递增序列变量d将序列划分

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

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

III code

IV problem

V expandtion