2016-06-12 75 views
1

這個算法穩定與否?我檢查了穩定的含義並在本網站上找到了一些東西。如果我理解正確,那麼當兩個具有相同鍵的事物在輸入中以相同的順序出現時,但在排序的輸出中,也是穩定的(我們討論排序算法)。以下算法是否穩定?

下面的算法是衆所周知的Bubblesort。 我會說它是穩定的,因爲我看不到2個相等的元素在那裏交換,因此它必須是穩定的算法。 我說得對嗎?是否足夠做「證明」?

Input: Array arr with n integers 
Output: Array arr sorted upward 
repeat 
    swapped = false 
    for i = 1 to n-1 do 
     if arr[i] > arr[i+1] then 
     temp = arr[i] 
     arr[i] = arr[i+1] 
     arr[i+1] = temp 
     swapped = true 
     end if 
    end for 
until not swapped 

回答

1

是的,它是穩定的。 如果你實施它

if arr[i] >= arr[i+1] then 

然後你會失去穩定性。

此外,是的,穩定的意思是:當兩個具有相同鍵的東西在輸入中以相同的順序出現時,但也在排序的輸出中出現。 您需要穩定的排序算法,當您首先按鍵1排序,然後按鍵2排序時