[toc]

排序与搜索

排序算法 ( 英语: Sorting algorithm ) 是一种能将一串数据依照特定顺序进行排列的一种算法.

排序算法的稳定性

稳定性: 稳定排序算法会让原本有相等键值的记录维持相对次序. 也就是如果一个排序算法是稳定的, 当有两个相等键值的纪录 R 和 S, 且在原本的列表中 R 出现在 S 之前, 在排序过的列表中 R 也将会是在 S 之前.

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

( 4, 1 ) ( 3, 1 ) ( 3, 7 ) ( 5, 6 )

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

( 3, 1 ) ( 3, 7 ) ( 4, 1 ) ( 5, 6 )  ( 维持次序 )

( 3, 7 ) ( 3, 1 ) ( 4, 1 ) ( 5, 6 )  ( 次序被改变 )

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