java 使用简单的demo实例告诉你优化算法的强大

Java教程 2025-08-17

这里的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.ba**i*du.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.ba**i*du.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