Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 气泡排序算法中的迭代次数是否等于(n-1)!对于n个元素?_Algorithm_Bubble Sort - Fatal编程技术网

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
元素的迭代。

为什么每次我在这里看到冒泡排序实现时,它都是错误的……是的,当数组排序时,它会工作,但不会停止,使数组非常缓慢。。请看这个如何调试我的冒泡排序代码,以找出缺少的内容。(第一个循环中的结束条件)