各类排序总结(总)

排序法数组

平均时间spa

最差情形排序

稳定度ci

额外空间table

备注tab

冒泡移动

O(n2)di

    O(n2)时间

稳定ab

O(1)

n小时较好

交换

O(n2)

    O(n2)

不稳定

O(1)

n小时较好

选择

O(n2)

O(n2)

不稳定

O(1)

n小时较好

插入

O(n2)

O(n2)

稳定

O(1)

大部分已排序时较好

基数

O(logRB)

O(logRB)

稳定

O(n)

B是真数(0-9),

R是基数(个十百)

Shell

O(nlogn)

O(ns) 1<s<2

不稳定

O(1)

s是所选分组

快速

O(nlogn)

O(n2)

不稳定

O(nlogn)

n大时较好

归并

O(nlogn)

O(nlogn)

稳定

O(n)

n大时较好

O(nlogn)

O(nlogn)

不稳定

O(1)

n大时较好

 

  1. 若n较小:直接选择或直接插入。此时若是记录自己信息量较大应选择直接选择排序,由于直接插入排序的移动记录次数比直接选择多不少。
  2. 若n较大,应选择时间为O(nlogn)的快排、归并或堆排序。快排时间依赖于数组原始状况,当原始数组较随机时时间短;归并不依赖与数组的原始状况,可是有空间代价为o(n)。
  3. 当原始数组基本有序时用直接插入或冒泡排序。
相关文章
相关标签/搜索