当阵列通过反复追加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
用于表示数组的长度。
所以我们将相同的数字添加到数组的末尾,但是这个数字也恰好是最大的数字,因此它将保留在数组的末尾。这是否意味着它对效率没有任何影响?我很困惑。
答案 0 :(得分:0)
不,它对效率没有影响。
在selection sort中,由于嵌套循环,性能为N ^ 2。即使最后的元素不需要交换,循环仍然会比较它们。
所以,回答你的确切问题:因为最好的情况,最坏的情况和平均情况都是N ^ 2,并且对效率没有影响,性能没有变化。
答案 1 :(得分:0)
升序,
因此,我们必须检查所有元素的其余部分是否通过检查获得最小值,即使相同的元素存在,直到最后一个元素。
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)
最佳情况。