我正在计算这个算法的运行时间?
Cost No Of Times
for(j=1;j<=n-1;j++){ c1 n(loop will run for n-1 times +1 for failed cond
for(i=0;i<=n-2;i++){ c2 n*(n-1) (n-1 from outer loop and n for inner
if(a[i]>a[i+1]){ c3 (n-1)*(n-1)
Swap c4 (n-1)*(n-1) {in worst case }
}
}
Run Code Online (Sandbox Code Playgroud)
在最坏的情况下, T(n)= c1*n + c2*(n-1)n + c3(n-1)(n-1)+ c4*(n-1)(n-1) 即O(n ^ 2)
在最好的情况下:
T(n)= c1*n + c2*(n-1)n + c3(n-1)(n-1) ,其为O(n ^ 2).
但实际上在最佳情况下,冒泡排序具有时间复杂度O(n). 谁能解释一下?
我对如何执行此代码感到困惑.假设我们有
int x=30,*y,*z;
y=&x;
Run Code Online (Sandbox Code Playgroud)
*y ++和++*y之间有什么区别?以及该计划的产出是什么?
#include<stdio.h>
int main(){
int x=30,*y,*z;
y=&x;
z=y;
*y++=*z++;
x++;
printf("%d %d %d ",x,y,z);
return 0;
}
Run Code Online (Sandbox Code Playgroud)