n表示数据规模
Of(n) 表示运行算法所需执行的指令数,和f(n)成正比。
复杂度 | 指令数 |
---|---|
寻找数组中的最大/最小值O(n) | 所执行指令数:a*n |
二分查找法Of(logn) | 所执行指令数:b*logn |
选择排序算法O(n^2) | 所需指令数:c*nlogn |
归并排序算法O(nlogn) | 所需指令数:d*nlogn |
注意:表中的a、b、c、d是一个常数
时间复杂度分析:
public class TimeComplexityAnalysis {
public static void main(String args[]) {
for(int x = 1;x <= 9;x ++) {
int n = (int)(Math.pow(10, x));
long startTime = System.currentTimeMillis();
long sum = 0;
for(int i = 0;i < n;i ++)
sum += i;
long endTime = System.currentTimeMillis();
System.out.println("sum="+sum);
System.out.println("10^"+x+":"+(endTime-startTime)+"ms");
System.out.println();
}
}
}
如果要在1s之内解决问题:
O(n^2) 的算法可以处理大约10^4级别的数据;
O(n)的算法可以处理大约10^8级别的数据;
O(nlogn) 的算法可以处理大约10^7级别的数据;