为什么选择排序可以稳定或不稳定

我知道selection sort可以实现为稳定或不稳定。但是我不知道怎么回事。我认为排序算法只能是稳定的或不稳定的。有人可以解释吗?

回答:

基本上selection sort,在每个“回合”结束时发生的交换可以更改具有相同值的项目的相对顺序。

例如,假设您整理4 2 3 4 1selection sort

第一个“回合”将遍历每个元素以寻找最小元素。它会发现1是最小元素。然后它将1交换到第一个位置。这将导致第一个位置的4进入最后一个位置:1 2 3 4 4

现在4的相对顺序已更改。原始列表中的“第一个” 4已移至其他4个之后的位置。

记住稳定的定义是

保持相同值的元素的相对顺序。

好吧,selection sort可以通过 在一组值中找到“最小”值,然后将其与第一个值交换来工作

码:

2,3,1,1#扫描0到n并找到’最小’值

1,3,2,1#用元素0交换’最小’。

1,3,2,1#扫描1到n并找到’最小’值

1,1,2,3#将’least’与元素1交换。

…等等,直到将其排序。

为了使其稳定,而不是交换值,而是插入“最小”值

码:

2,3,1,1#扫描0到n并找到’最小’值

1,2,3,1#在位置0插入’least’,将其他元素推回去。

1,3,2,1#扫描1到n并找到’最小’值

1,1,2,3#在位置1插入“最小”,将其他元素推回去。

…等等,直到将其排序。

修改不稳定的选择排序算法使其变得稳定应该不难。

以上是 为什么选择排序可以稳定或不稳定 的全部内容, 来源链接: utcz.com/qa/412500.html

回到顶部