为什么选择排序不稳定?
Why selection sort is unstable?
问题:
我浏览了各种列表,发现了一个非常有趣的图像 stabilities.I 我不会问排序的稳定性是什么意思,因为它已经 answered.My 问题是如何 选择排序 ,因为它被广泛使用所以不稳定。
这是各种图像及其稳定性和复杂性:-
正如您从图像中看到的那样,最后一列为我们提供了每种类型的稳定性。
图片来源:-
https://medium.com/@_marcos_otero/the-real-10-algorithms-that-dominate-our-world-e95fa9f16c04
我对快速排序和堆排序没有经验,但我习惯了选择排序并在各种程序中使用它,从未发现任何不稳定的问题behaviour.I知道复杂性方面的冒泡排序比选择排序好得多但实际工作是相同的,即按升序或降序对一组值进行排序和排列,对吗?所以这种排序的稳定性有点令人困惑,主要是迫使我思考一种排序比另一种更稳定。
任何人都可以向我解释不稳定的行为以及它们的稳定性在这些排序中的复杂性有何不同?
选择排序不稳定的原因是交换一对元素的步骤可能会改变另一对具有相同键的元素的相对顺序。例如,排序数组时
2 2' 1
因为最小键的元素是1,你必须通过交换1和2把它推到数组的最低位置:
1 2' 2
用 2 交换 1 改变了两个相等元素(2' 和 2)的相对顺序。
也就是说,具有相同键的两个元素在排序输出中的出现顺序与它们在输入数组中出现的顺序不同。因此,选择排序是不稳定的。
问题: 我浏览了各种列表,发现了一个非常有趣的图像 stabilities.I 我不会问排序的稳定性是什么意思,因为它已经 answered.My 问题是如何 选择排序 ,因为它被广泛使用所以不稳定。
这是各种图像及其稳定性和复杂性:-
正如您从图像中看到的那样,最后一列为我们提供了每种类型的稳定性。
图片来源:-
https://medium.com/@_marcos_otero/the-real-10-algorithms-that-dominate-our-world-e95fa9f16c04
我对快速排序和堆排序没有经验,但我习惯了选择排序并在各种程序中使用它,从未发现任何不稳定的问题behaviour.I知道复杂性方面的冒泡排序比选择排序好得多但实际工作是相同的,即按升序或降序对一组值进行排序和排列,对吗?所以这种排序的稳定性有点令人困惑,主要是迫使我思考一种排序比另一种更稳定。
任何人都可以向我解释不稳定的行为以及它们的稳定性在这些排序中的复杂性有何不同?
选择排序不稳定的原因是交换一对元素的步骤可能会改变另一对具有相同键的元素的相对顺序。例如,排序数组时
2 2' 1
因为最小键的元素是1,你必须通过交换1和2把它推到数组的最低位置:
1 2' 2
用 2 交换 1 改变了两个相等元素(2' 和 2)的相对顺序。
也就是说,具有相同键的两个元素在排序输出中的出现顺序与它们在输入数组中出现的顺序不同。因此,选择排序是不稳定的。