我正在尝试创建一个使用冒泡排序对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个元素的最大次数是多少?计算它的等式是什么?
(这是我在这里的第一篇文章,如果我犯了任何错误,我很抱歉。) 提前谢谢。
答案 0 :(得分:0)
最糟糕的情况是输入数组是按降序排序的。第一个循环执行99次,接下来的98次,下一个97 ......等于&#34; sum(n)从n = 99到n = 1&#34; ,这意味着最坏的情况是n(n + 1)/ 2,在你的情况下,n = 99,即4950。