这可能是微不足道的,但是我不明白为什么选择排序的默认实现不稳定?
在每次迭代中,您都会在剩余数组中找到最小的元素。找到此最小值时,可以选择找到的第一个最小值,并且仅在元素实际小于该最小值时才对其进行更新。因此,每次迭代中选择的元素是第一个最小值- 意思是,它是前一个排序顺序中的第一个。因此,据我所知,当前排序不会破坏先前排序在相等元素上生成的顺序。
我想念什么?
一个小例子:
设b = B in
,,,(a <b <c)
一个周期后,对序列进行了排序,但B和b的顺序已更改:
,,,
但是,如果您插入最小值而不是进行切换,则可以实现稳定的“选择排序”。但是要使之高效,您应该拥有一个支持低成本插入的数据结构,否则将导致二次复杂性。