大Theta表示法和选择排序

时间:2011-09-11 22:02:27

标签: sorting big-theta

当阵列通过反复追加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用于表示数组的长度。

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

2 个答案:

答案 0 :(得分:0)

不,它对效率没有影响。

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

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

答案 1 :(得分:0)

升序,

  1. 在列表中找到最小值
  2. 将其与第一个位置的值交换
  3. 对列表的其余部分重复上述步骤(从   第二个位置并且每次都在推进)
  4. 因此,我们必须检查所有元素的其余部分是否通过检查获得最小值,即使相同的元素存在,直到最后一个元素。

    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)最佳情况。

    enter image description here