原文链接
程序运行时间计时器
package cn.ywrby.tools;
public class Stopwatch {
private final long start;
public Stopwatch() {
start = System.currentTimeMillis();
}
public double elapsedTime() {
long now = System.currentTimeMillis();
return (now - start) / 1000.0;
}
public static void main(String[] args) {
Stopwatch watch = new Stopwatch();
for (int i = 0; i < 1000; i++) {
System.out.println("helloworld!");
}
double time = watch.elapsedTime();
System.out.println(time);
}
}
增长数量级概念的应用使我们能够进一步将程序和实现它的算法隔离
对于大多数模型,其运行时间的数学模型确定步骤如下:
- 确定输入模型,定义问题规模
- 识别内循环
- 根据内循环中的操作确定成本模型
- 对于给定的输入,判断这些操作的执行频率
描述 |
增长数量级 |
典型的代码 |
说明 |
举例 |
常数级别 |
1 |
a=b+c; |
普通语句 |
将两个数相加 |
对数级别 |
logN |
二分策略 |
二分查找 |
|
线性级别 |
N |
for循环 |
循环 |
找出最大元素 |
线性对数级别 |
NlogN |
自上而下的归并排序 |
分治 |
归并排序 |
平方级别 |
N^2 |
双层循环 |
双层循环 |
检查所有元素对 |
立方级别 |
N^3 |
三层循环 |
三层循环 |
检查所有三元组 |
指数级别 |
2^N |
|
穷举查找 |
检查所有子集 |