关于选择排序的稳定性在一个例子中,这是正确的吗?

时间:2013-09-22 14:28:31

标签: sorting

我已经看到了一个关于应用于一组互联网交易的选择和插入排序的稳定性的例子:

enter image description here

我已经通过使用位置标准选择排序来尝试对其进行排序:

enter image description here

我的意思是我知道选择排序选择无序部分中的元素索引,右侧部分,并将其放入左侧部分的前面。在第一轮芝加哥09:00:00处于正确位置,芝加哥没有其他时间更少。然后我们将09:00:03传递到凤凰城,所以我们检查右边的一个较小的元素(芝加哥09:00:59),因为这个元素较小,我们应该最终得到:

Chicago 09:00:00
Chicago 09:00:59

但是在示例中说因为我们使用的选择排序是不稳定的,而且使用插入排序它可以是稳定的

我在比较中做错了什么?

此外,我在这里看到另一个例子:

Sort this elements
(4,0)(4,1)(1,0)

好吧,如果我使用选择排序,我只检查每个元组的第一个元素,我将最终得到:

(1,0)(4,1)(4,0)
好吧,似乎它不稳定,但它说如果我们使用插入排序,我们将最终得到:

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

但是如果我对原始数组做了一点改动:

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

我们只比较第一个元素,插入排序也不稳定,因为我们最终得到:

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

好的,如果我们将两个元素进行比较,那么选择排序也可以是稳定的 这些证明有什么问题?

1 个答案:

答案 0 :(得分:1)

在上一个示例中,插入排序是稳定的。排序算法的稳定性意味着具有相同键的项目将保持相对于彼此的相同顺序

所以在你的上一个例子中你有:

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

插入排序导致:

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

商品(4,1)(4,0)相对于彼此保持相同的顺序。也就是说,(4,1)在原始数组中位于(4,0)之前,并且位于最终数组中的该项之前。排序很稳定。

此外,使用选择排序对任何特定数组进行排序的结果可能表示选择排序是稳定的。也就是说,无法保证选择排序会改变相等项目的相对顺序。例如,从:

开始
(4,1)(1,0)(4,0)

选择排序将产生

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

在这种情况下,选择排序不会更改(4,1)(4,0)的相对顺序。但这并不意味着选择排序是稳定的。毕竟,即使停止的时钟也是一天两次。