1. 程式人生 > >排序與搜索

排序與搜索

鍵值 決賽 決定 假設 排列 無法 數據 然而 順序

排序算法(英語: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, 1) (3, 7)維持原有)
(3, 7) (3, 1) (4, 1) (5, 6) (次序被改變)
--------》不穩定排序(3, 1) (3, 7)沒有維持原有排序)

不穩定排序算法可能會在相等的鍵值中改變紀錄的相對次序,但是穩定排序算法從來不會如此。不穩定排序算法可以被特別地實現為穩定。作這件事情的一個方式是人工擴充鍵值的比較,如此在其他方面相同鍵值的兩個對象間之比較,(比如上面的比較中加入第二個標準:第二個鍵值的大小)就會被決定使用在原先數據次序中的條目,當作一個同分決賽。然而,要記住這種次序通常牽涉到額外的空間負擔。

排序與搜索