O(1) 常数阶
#include <stdio.h>
#include <string.h>int main( )
{int i,sum = 0,n =100000000000;sum = (1 + n) * (n /2);printf("%d",sum);return 0;
}
执行次数不随n的变化而变化。
O(n) 线性阶
#include <stdio.h>
#include <string.h>int main( )
{int i,sum = 0,n =100000000000;for (i = 1;i<=n;i++) {sum = sum + i;}printf("%d",sum);return 0;
}
执行次数随n增加而线性增加。
O(n^2) 平方阶
#include <stdio.h>
#include <string.h>int main( )
{int i,j,sum = 0,n =10;for (i = 1;i<=n;i++) {for (j = 1 ;j<n;j++) {printf("i like u!\n");}}return 0;
}
O(logN) 对数阶
#include <stdio.h>
#include <string.h>int main( )
{int i =1,n = 32;int count = 0;while ( i < n ) {i = i * 2; // O(log2n)count ++ ;}printf("执行的次数为%d\n",count);return 0;
}
#include <stdio.h>
#include <string.h>int main( )
{int i =1,n = 243;int count = 0;while ( i < n ) {i = i * 3; //O(log3n)count ++ ;}printf("执行的次数为%d\n",count);return 0;
}
听,实践,思考,举一反三,多应用,真正的掌握,从书面升华为技能。--小甲鱼
O(2^n) 指数阶,最可怕
#include <stdio.h>
#include <string.h>
#include<math.h>
int main( )
{int i =0,n = 25;int count = 0;while ( i < pow(2,n) ) {i++;count ++ ;}printf("执行的次数为%d\n",count);return 0;
}
很可怕,n到25的时候需要2秒钟,变成26之后,就等不完了。
正常情况下,不会有O(n^3)、O(2^n)、O(n!)、O(n^n),谁用谁傻逼。