1

当数组通过重复附加 19 增长时,选择排序算法的 Big-Theta (T) 表示法的最佳情况和最坏情况复杂度是多少?

例如:

[ 19, 13, 7, 19, 12, 16, 19 ],
[ 19, 13, 7, 19, 12, 16, 19, 19 ],
[ 19, 13, 7, 19, 12, 16, 19, 19, 19 ]

等等。n用于表示数组的长度。

所以我们将相同的数字添加到数组的末尾,但这个数字也恰好是最大的数字,所以它会留在数组的末尾。这是否意味着它真的对效率没有任何影响?我很困惑。

4

2 回答 2

1

升序,

  1. 查找列表中的最小值
  2. 将其与第一个位置的值交换
  3. 对列表的其余部分重复上述步骤(从第二个位置开始,每次都前进)

因此,我们必须检查所有元素的其余部分是否风雨无阻,通过检查(即使存在相同的元素)直到最后一个元素来获得最小值。

A - an array containing the list of numbers
numItems - the number of numbers in the list

for i = 0 to numItems - 1
    for  j = i+1 to numItems               
        if A[i] > A[j]
            // Swap the entries
            Temp = A[i]
            A[i] = A[j]
            A[j] = Temp          
        End If    
    Next j
Next i

正如你可以看到上面的伪代码,两个循环都没有任何条件地迭代到它们的极限。所以它给出了θ(n²). 但是,交换情况的O(n)平均、θ(n)最坏和θ(1)最佳情况。

在此处输入图像描述

于 2017-04-30T20:40:23.087 回答
0

不,它对效率没有影响。

选择排序中,由于嵌套循环,性能为 N^2。即使最后的元素不需要交换,循环仍然会比较它们。

因此,要回答您的确切问题:由于最佳情况、最坏情况和平均情况的性能都是 N^2,并且对效率没有影响,因此性能没有变化。

于 2013-07-10T22:50:36.460 回答