十大排序算法(无代码)

首先来介绍一些简单的概念:

1.稳定:如果a原本在b的前面,且a = b,排序后a仍然在b的前面

  不稳定:如果a原本在b的前面,且a = b,排序后a可能出现在b的后面

 

2.十大经典排序算法基本可以分为两类:

非线性时间排序:通过比较来确定元素间的相对次序,时间复杂度最快为O(logN)

线性时间排序:通过创建有序的空间,将元素按照一定的规则放入有序空间,再依次取出。以空间来换取时间,可以突破O(logN)

 

非线性时间排序有以下几种:比较排序(冒泡排序、快速排序)   插入排序(直接插入排序、希尔排序)   选择排序(选择排序、堆排序)   归并排序(二路归并、多路归并)

线性时间排序有以下几种:计数排序、桶排序、基数排序

 

3.稳定的排序算法:冒泡、插入、归并、计数、桶、基数

不稳定的排序算法:选择、希尔、快速、堆

 

4.时间复杂度和空间复杂度:

冒泡排序:时间复杂度O(n^2),空间复杂度O(1)

选择排序:时间复杂度O(n^2),空间复杂度O(1)

插入排序:时间复杂度O(n^2),空间复杂度O(1)

希尔排序:时间复杂度O(n^1.3),空间复杂度O(1)

归并排序:时间复杂度O(nlogn),空间复杂度O(n)

快速排序:时间复杂度O(nlogn),空间复杂度O(logn)

堆排序:时间复杂度O(nlogn),空间复杂度O(1)

计数排序:时间复杂度O(n+k),空间复杂度O(k)

桶排序:时间复杂度O(n+k),空间复杂度O(k)

基数排序:时间复杂度O(n*k),空间复杂度O(n+k)

posted @ 2022-10-05 22:08  Dhw不爱Cpp  阅读(51)  评论(0)    收藏  举报