冒泡排序最多次数?

时间:2015-11-24 17:01:25

标签: math bubble-sort

我正在尝试创建一个使用冒泡排序对100个随机数进行排序的函数。 我想我可能做错了,但是..让我先告诉你我的代码:

#define MAXVALUE 100

void sortera_nummer(int slumptal[]){
int i,j,temp,k=0;


for(i=0;i<MAXVALUE;i++){
    for(j=MAXVALUE-1;j>i;j--){
        if(slumptal[j-1]>slumptal[j]){
            temp=slumptal[j-1];
            slumptal[j-1]=slumptal[j];
            slumptal[j]=temp;
            k++;
        }
    }
}
printf("K = %d",k);
}

所有数字都从最低到最高排序,因此排序有效。但我得到K =一个意外的高数字。 (它在2300到2700之间无处不在。)

所以现在我想知道 - 正确运行的冒泡排序可以运行100个元素的最大次数是多少?计算它的等式是什么?

(这是我在这里的第一篇文章,如果我犯了任何错误,我很抱歉。) 提前谢谢。

1 个答案:

答案 0 :(得分:0)

最糟糕的情况是输入数组是按降序排序的。第一个循环执行99次,接下来的98次,下一个97 ......等于&#34; sum(n)从n = 99到n = 1&#34; ,这意味着最坏的情况是n(n + 1)/ 2,在你的情况下,n = 99,即4950。

相关问题