【问题标题】:Big Theta Notation and Selection Sort大 Theta 表示法和选择排序
【发布时间】:2017-05-01 04:40:23
【问题描述】:

当数组通过重复附加 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用来表示数组的长度。

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

【问题讨论】:

  • 您使用哪个版本的 SELECT?

标签: sorting big-theta


【解决方案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) 交换情况的最佳情况。

【讨论】:

    【解决方案2】:

    不,对效率没有影响。

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

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

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 2012-05-11
      • 2013-01-23
      • 1970-01-01
      • 2015-02-14
      相关资源
      最近更新 更多