排序算法

排序算法

在计算机科学所使用的排序算法通常依以下标准分类:

计算的时间复杂度(最差、平均、和最好性能),依据串列(list)的大小(

n

{\displaystyle n}

)。一般而言,好的性能是

O

(

n

log

n

)

{\displaystyle O(n\log n)}

(大O符号),坏的性能是

O

(

n

2

)

{\displaystyle O(n^{2})}

。对于一个排序理想的性能是

O

(

n

)

{\displaystyle O(n)}

,但平均而言不可能达到。基于比较的排序算法对大多数输入而言至少需要

O

(

n

log

n

)

{\displaystyle O(n\log n)}

内存使用量(以及其他电脑资源的使用)

稳定性:稳定排序算法会让原本有相等键值的纪录维持相对次序。也就是如果一个排序算法是稳定的,当有两个相等键值的纪录

R

{\displaystyle R}

S

{\displaystyle S}

,且在原本的串列中

R

{\displaystyle R}

出现在

S

{\displaystyle S}

之前,在排序过的串列中

R

{\displaystyle R}

也将会是在

S

{\displaystyle S}

之前。

排序的方法:插入、交换、选择、合并等等。

稳定性

编辑

稳定排序纸牌的例子。当纸牌用稳定排序按点值排序的时候,两个5之间必定保持它们最初的次序。在用不稳定排序来排序的时候,两个5可能被按相反次序来排序。

当相等的元素是无法分辨的,比如像是整数,稳定性并不是一个问题。然而,假设以下的数对将要以他们的第一个数字来排序。

(

4

,

1

)

(

3

,

1

)

(

3

,

7

)

(

5

,

6

)

{\displaystyle (4,1)(3,1)(3,7)(5,6)}

在这个状况下,有可能产生两种不同的结果,一个是让相等键值的纪录维持相对的次序,而另外一个则没有:

(

3

,

1

)

(

3

,

7

)

(

4

,

1

)

(

5

,

6

)

{\displaystyle (3,1)(3,7)(4,1)(5,6)}

(維持次序)

(

3

,

7

)

(

3

,

1

)

(

4

,

1

)

(

5

,

6

)

{\displaystyle (3,7)(3,1)(4,1)(5,6)}

(次序被改變)

不稳定排序算法可能会在相等的键值中改变纪录的相对次序,但是稳定排序算法从来不会如此。不稳定排序算法可以被特别地实作为稳定。作这件事情的一个方式是人工扩充键值的比较,如此在其他方面相同键值的两个物件间之比较,(比如上面的比较中加入第二个标准:第二个键值的大小)就会被决定使用在原先资料次序中的条目,当作一个同分决赛。然而,要记住这种次序通常牵涉到额外的空间负担。

🎯 相关推荐

宅急送一般多久發貨?
365batapp

宅急送一般多久發貨?

📅 08-05 👀 2344
什么花代表幸运?揭秘花语中的幸运之花!
365bet提款问题

什么花代表幸运?揭秘花语中的幸运之花!

📅 08-05 👀 6226
《英雄联盟》13.21 版更新:极限闪击模式回归
best365官网下载

《英雄联盟》13.21 版更新:极限闪击模式回归

📅 07-10 👀 8153