排序算法概述

  本文关于排序算法概述主要引自《新编数据结构习题与解析》(李春葆等著)第11章。

  所谓排序,就是要整理表中的元素,使之按关键字递增(或递减)次序排列起来。

  如果待排序的表中,存在多个关键字相同的元素,经过排序后这些具有相同关键字的元素之间的相对次序保持不变,则称这种排序方法是稳定的;反之,若具有相同关键字的元素之间的相对次序发生变化,则称这种排序方法是不稳定的。

  下边是一些常用排序算法:

大类别

排序算法

时间复杂度

空间复杂度

稳定性

复杂性

平均情况

最坏情况

最好情况

插入排序

插入排序

O(n2)

O(n2)

O(n)

O(1)

稳定

简单

希尔排序

O(n1.3)

O(1)

不稳定

较复杂

选择排序

简单排序

O(n2)

O(n2)

O(n2)

O(1)

不稳定

简单

堆排序

O(nlog2n)

O(nlog2n)

O(nlog2n)

O(1)

不稳定

较复杂

交换排序

冒泡排序

O(n2)

O(n2)

O(n)

O(1)

稳定

简单

快速排序

O(nlog2n)

O(n2)

O(nlog2n)

O(log2n)

不稳定

较复杂

归并排序

归并排序

O(nlog2n)

O(nlog2n)

O(nlog2n)

O(n)

稳定

较复杂

基数排序

基数排序

O(d(n+r))

O(d(n+r))

O(d(n+r))

O(n+r)

稳定

较复杂

  注:位图排序也是值得注意的一种排序方法。 

    当将“二叉树”按中序输出时就是一个有序的序列。

  至于快速排序,因为存在递归调用,所以空间复杂度为O(log2n)。

  可参考博文:

  经典排序算法总结与实现  

原文地址:https://www.cnblogs.com/xiehongfeng100/p/4411830.html