2010-10-28 48 views
4

直型選型交換選擇系列有什麼區別?我今天進入了一個小辯論 - 我的教授在他的講義中使用了這兩個術語。維基百科和任何教科書或網站會給你的選擇排序是他所稱的「交換選擇排序」。直選型與交換選型分類

我從來沒有聽說過(只有「選擇排序」)所使用的「交換選擇排序」一詞,並不能找到對前者術語任何相關的資源聯機。此外,「交換排序」重定向到維基百科上的冒泡排序。

我還從來沒有聽說過之前所使用的術語「直選擇排序」,並不能找到任何相關的資源。他的筆記指出,這是一種選擇排序的版本,它使用輔助數組而不是就地排序,從最小元素到最大元素逐個填充它。當我提出這個問題時,他聲稱這個問題比較老,並且僅僅因爲它沒有出現在Google上並不意味着這是不正確的。不過,我在Google上發現了更加晦澀的事情,而類似選擇排序的東西將在網絡上擁有大量資源。

那麼,這些算法是否按其他名稱?他只是有錯的名字嗎?誰是對的?

+0

不要與你的教授爭吵:),即使你是對的,他仍然有評級書! – Kiril 2010-10-28 14:42:44

+2

我很關心正確的答案,我不必擔心我的成績。 – 2010-10-28 14:45:38

+0

像bobince所說的,語義不是很重要......重要的是你明白了算法的工作原理。當您需要應用這些算法時,您的老師所稱的算法將會產生一點差異。 – Kiril 2010-10-28 15:22:14

回答

5

我從來沒有聽說過這些具體條款,但他們道理給我。只要你明白他們在做什麼,我不認爲這個術語真的很重要。

如果您要創建一個列表的排序的副本,您可以創建新的列表中的一個接一個從最小的舊列表的每個項目; '直'似乎是合理的描述。

OTOH如果你排序就地則每次你移動一個新的項目列表中的頭一個列表,你必須移動,這是以前沒有倒退,以騰出空間的項目。在數組列表中,最便宜的方法就是將新的最小項目和舊的項目交換位置交換。 (在一個鏈表它會更快讓列表滑動的整個尾背面一處。)

教科書往往集中在就地排序。