交换的冒泡排序数量

时间:2013-11-17 20:06:31

标签: sorting bubble-sort

要使用冒泡排序算法对6个元素{11,5,7,3,2,1}的列表进行排序,您可以手动找到它以进行14次交换。我知道以下公式给出了对手

n(n-1)/2

6(6-1)/ 2 = 15.为什么15而不是14?

此外,快速排序和插入排序是否有类似的公式?

提前致谢!

2 个答案:

答案 0 :(得分:0)

交换不等同于比较。对于该列表,按元素的任何顺序,将进行15次比较。交换次数取决于元素的实际顺序。 在插入排序中,比较次数与冒泡排序相同。 对于qsort,这可能会有所帮助:https://math.stackexchange.com/questions/397100/compute-number-of-comparisons-in-quicksort-pivoting-on-median-or-third

答案 1 :(得分:0)

升序:

在冒泡排序中,最大的元素向右移动。因此,当在右侧找到较小的元素时,便完成了交换。

因此,要计算元素的交换数量,只需计算右侧小于该元素的元素的数量即可。

数组{11,5,7,3,2,1}

对于11,右侧的元素数量较小:5(5,7,3,2,1)

对于5:3(3,2,1)

对于7:3(3,2,1)

3:2(2,1)

for 2:1(1)

为1:0

总掉期:5 + 3 + 3 + 2 + 1 = 14