Why is Selection Sort not stable?

前端 未结 3 608
遥遥无期
遥遥无期 2021-01-30 04:12

This might be trivial, but I don\'t understand why the default implementation of Selection Sort is not stable?

At each iteration you find the minimum element in the rema

相关标签:
3条回答
  • 2021-01-30 04:32

    The problem is that selection sort swaps elements from the front of the array into the spot vacated by the minimum element, which can mess up the sorted order. For example, suppose I'm sorting

    (4, 0), (4, 1), (1, 0)
    

    Selection sort first swaps the (1, 0) to the front:

    (1, 0), (4, 1), (4, 0)
    

    And now the (4, 0) and (4, 1) are out of order from where they started in the sort. Running this to completion leaves the elements in this order, and the 4s are out of order.

    Hope this helps!

    0 讨论(0)
  • 2021-01-30 04:37

    A small example:

    Let b = B in

    < B > , < b > , < a > , < C > (with a < b < c)

    After one cycle the sequence is sorted but the order of B and b has changed:

    < a > , < b > , < B > , < c >

    But you can however implement Selections Sort stable if you, instead of switching, insert the minimum value. But for that to be efficient you should have a data structure that supports insertion at a low cost or otherwise you end up with quadratic complexity.

    0 讨论(0)
  • 2021-01-30 04:56

    Stable means does not calculate further if elements is already sorted, but it calculate till end hence it is not stable.

    0 讨论(0)
提交回复
热议问题