java 使用简单的demo实例告诉你优化算法的强大
java 使用简单的demo实例告诉你优化算法的强大
发布时间:2016-12-28 来源:查字典编辑
摘要:这里的demo是一个累加算法,如1,2,3,4.....n即:sum=1+2+3+4......+n;我们可以这样做:复制代码代码如下:/*...

这里的demo是一个累加算法,如1,2,3,4.....n

即:sum = 1+2+3+4......+n;

我们可以这样做:

复制代码 代码如下:

/**

* 循环实现累加方法

* @param value

* @return

*/

private static long cycle(long value) {

long sum = 0;

for (long i = 1,v = value; i <= v; i++) {

sum += i;

}

return sum;

}

另一种方法(高斯方法):

复制代码 代码如下:

/**

* 高斯方法:<code>(n+1)*n/2</code><br>

* you can read more from <a href="http://zhidao.baidu.com/question/411055258.html">Here</a>

* @param value

* @return

*/

private static long gaosi(long value) {

long sum = 0;

sum = (value + 1) * value / 2;

return sum;

}

我们可以写一个demo来测试他们的差别:

复制代码 代码如下:

/**

*

*/

package com.b510.arithmetic;

/**

* 累加算法实现<br>

*

* @date 2013-4-16

* @author hongten

*

*/

public class AddArithmetic {

/**

* 循环实现累加方法

* @param value

* @return

*/

private static long cycle(long value) {

long sum = 0;

for (long i = 1,v = value; i <= v; i++) {

sum += i;

}

return sum;

}

/**

* 高斯方法:<code>(n+1)*n/2</code><br>

* you can read more from <a href="http://zhidao.baidu.com/question/411055258.html">Here</a>

* @param value

* @return

*/

private static long gaosi(long value) {

long sum = 0;

sum = (value + 1) * value / 2;

return sum;

}

public static void main(String[] args) {

//清理一下内存,但不一定会执行

System.gc();

// you should change value,then get the different results

long value = 10000000;

long sum = 0;

long start = System.currentTimeMillis();

sum = cycle(value);

long end = System.currentTimeMillis();

System.out.println("使用循环累加方法从[1]累加到["+value+"]用时 : ["+(end - start) + "]ms,结果:"+ sum);

//清理一下内存,但不一定会执行

System.gc();

start = System.currentTimeMillis();

sum = gaosi(value);

end = System.currentTimeMillis();

System.out.println("使用高斯方法从[1]累加到["+value+"]用时 : ["+(end - start) + "]ms,结果:"+ sum);

}

}

你可以改变main方法中的value的值,来测试他们所消耗的系统时间....

当然不同配置的机器运行结果是不一样的...

我机器运行情况:

复制代码 代码如下:

使用循环累加方法从[1]累加到[10000000]用时 : [24]ms,结果:50000005000000

使用高斯方法从[1]累加到[10000000]用时 : [0]ms,结果:50000005000000

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Java学习
热门Java学习
编程开发子分类