Algorithm 气泡排序算法中的迭代次数是否等于(n-1)!对于n个元素?
我最近在一本书中读到,如果我们对数组中的Algorithm 气泡排序算法中的迭代次数是否等于(n-1)!对于n个元素?,algorithm,bubble-sort,Algorithm,Bubble Sort,我最近在一本书中读到,如果我们对数组中的n元素进行排序,所需的迭代次数将是n*(n-1)*……*1=7 但我确信实际的比较次数将是(n-1)+(n-2)+…+1=n(n-1)/2。那么,迭代次数和比较次数是否有所不同?我猜不会,因为在每次迭代中,如果(m[j]>m[j+1])比较值[if(m[j]>m[j+1])]。那么,是我遗漏了什么,还是这本书错了 整个代码: for(i=0;i<7;i++) { for(j=0;j<7-i;j++) { if(m
n
元素进行排序,所需的迭代次数将是n*(n-1)*……*1=7代码>
但我确信实际的比较次数将是(n-1)+(n-2)+…+1=n(n-1)/2。那么,迭代次数和比较次数是否有所不同?我猜不会,因为在每次迭代中,如果(m[j]>m[j+1])比较值[if(m[j]>m[j+1])
]。那么,是我遗漏了什么,还是这本书错了
整个代码:
for(i=0;i<7;i++)
{
for(j=0;j<7-i;j++)
{
if(m[j]>m[j+1])
{
t=m[j];
m[j]=m[j+1];
m[j+1]=t;
}
}
}
for(i=0;i如果我正确理解了这个问题,就会有一些误解。对于任何数量的n
元素,都有
n!=1*2*...*(n-1)*n
排列它们的不同可能性,也称为排列。然而,这本身与任何排序算法无关。Bubblesort的渐进运行时复杂性为
O(n^2)
正如您已经提到的,因为Bubblesort比尝试所有可能性要聪明一点。要最终正确回答问题,不,Bubblesort不需要(n-1)!
对n
元素的迭代。为什么每次我在这里看到冒泡排序实现时,它都是错误的……是的,当数组排序时,它会工作,但不会停止,使数组非常缓慢。。请看这个如何调试我的冒泡排序代码,以找出缺少的内容。(第一个循环中的结束条件)