What is the benefit for a sort algorithm to be stable?

后端 未结 10 2430
被撕碎了的回忆
被撕碎了的回忆 2020-12-12 22:35

A sort is said to be stable if it maintains the relative order of elements with equal keys. I guess my question is really, what is the benefit of maintaining this relative o

10条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-12 23:18

    Not all sorting is based upon the entire value. Consider a list of people. I may only want to sort them by their names, rather than all of their information. With a stable sorting algorithm, I know that if I have two people named "John Smith", then their relative order is going to be preserved.

    Last     First       Phone
    -----------------------------
    Wilson   Peter       555-1212
    Smith    John        123-4567
    Smith    John        012-3456
    Adams    Gabriel     533-5574
    

    Since the two "John Smith"s are already "sorted" (they're in the order I want them), I won't want them to change positions. If I sort these items by last, then first with an unstable sorting algorithm, I could end up either with this:

    Last     First       Phone
    -----------------------------
    Adams    Gabriel     533-5574
    Smith    John        123-4567
    Smith    John        012-3456
    Wilson   Peter       555-1212
    

    Which is what I want, or I could end up with this:

    Last     First       Phone
    -----------------------------
    Adams    Gabriel     533-5574
    Smith    John        012-3456
    Smith    John        123-4567
    Wilson   Peter       555-1212
    

    (You see the two "John Smith"s have switched places). This is NOT what I want.

    If I used a stable sorting algorithm, I would be guaranteed to get the first option, which is what I'm after.

提交回复
热议问题