以下算法是否稳定?

时间:2016-06-12 17:43:37

标签: algorithm sorting proof

此算法是否稳定?我检查了稳定的含义,并在本网站上找到了一些东西。如果我理解正确的话,当有两个相同键的东西在输入中以相同的顺序出现时,某些东西(我们谈论排序算法)是稳定的,而且在排序的输出中也是如此。

以下算法是众所周知的Bubblesort。 我会说它是稳定的,因为我看不到那两个相等的元素在那里被交换,因此它必须是稳定的算法。 我是对的,是否足以成为“证据”?

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 个答案:

答案 0 :(得分:1)

是的,它很稳定。 如果你用

实现它
if arr[i] >= arr[i+1] then
那么你将失去稳定性。

同样,是的,稳定意味着:当具有相同键的2个事物在输入中以相同的顺序出现时,但也在输出中被排序。 当您首先按key1排序然后按key2

排序时,您需要稳定的排序算法