zoukankan      html  css  js  c++  java
  • 排序算法概述

      本文关于排序算法概述主要引自《新编数据结构习题与解析》(李春葆等著)第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)。

      可参考博文:

      经典排序算法总结与实现  

  • 相关阅读:
    luogu4781
    luogu 4933
    luogu p1726
    bzoj2238
    luogu 1462 通往奥格瑞玛的道路
    noip.ac 3276 矩阵
    luogu1144
    noip.ac 3248
    奶牛比赛
    小P的Civilization V
  • 原文地址:https://www.cnblogs.com/xiehongfeng100/p/4411830.html
Copyright © 2011-2022 走看看