《排序算法系列》

排序算法通过了很长时间的演变,产生了不少种不一样的方法。对于初学者来讲,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。所以,咱们颇有必要对全部常见的排序算法进行概括。算法

排序大的分类能够分为两种:内排序和外排序。在排序过程当中,所有记录存放在内存,则称为内排序,若是排序过程当中须要使用外存,则称为外排序。下面讲的排序都是属于内排序。atom

内排序有能够分为如下几类:spa

  (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。xml

  (2)、选择排序:直接选择排序、堆排序。blog

  (3)、交换排序:冒泡排序、快速排序。排序

  (4)、归并排序图片

  (5)、基数排序内存

表格版:table

排序方法 时间复杂度(平均) 时间复杂度(最坏) 时间复杂度(最好) 空间复杂度 稳定性 复杂性
直接插入排序 O(n2)O(n2) O(n2)O(n2) O(n)O(n) O(1)O(1) 稳定 简单
希尔排序 O(nlog2n)O(nlog2n) O(n2)O(n2) O(n)O(n) O(1)O(1) 不稳定 较复杂
直接选择排序 O(n2)O(n2) O(n2)O(n2) O(n2)O(n2) O(1)O(1) 不稳定 简单
堆排序 O(nlog2n)O(nlog2n) O(nlog2n)O(nlog2n) O(nlog2n)O(nlog2n) O(1)O(1) 不稳定 较复杂
冒泡排序 O(n2)O(n2) O(n2)O(n2) O(n)O(n) O(1)O(1) 稳定 简单
快速排序 O(nlog2n)O(nlog2n) O(n2)O(n2) O(nlog2n)O(nlog2n) O(nlog2n)O(nlog2n) 不稳定 较复杂
归并排序 O(nlog2n)O(nlog2n) O(nlog2n)O(nlog2n) O(nlog2n)O(nlog2n) O(n)O(n) 稳定 较复杂
基数排序 O(d(n+r))O(d(n+r)) O(d(n+r))O(d(n+r)) O(d(n+r))O(d(n+r)) O(n+r)O(n+r) 稳定 较复杂

 

 图片版:class

相关文章
相关标签/搜索