java 使用简单的demo实例告诉你优化算法的强大
2013-05-02 15:50
676 查看
这里的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
您可能感兴趣的文章:
相关文章推荐
- 一个demo告诉你优化算法的强大
- Java使用异或运算实现简单的加密解密算法实例代码
- Java中读写锁的实现及使用读写锁简单实现缓存系统的实例
- 使用Kotlin实现Android简单Demo,对比JAVA实现分析具体语法不同之处(二)
- java中读写锁的实现及使用读写锁简单实现缓存系统的实例
- java+html5的websocket简单实现BS聊天DEMO实例
- java Swing编程之布局管理器简单实例DEMO
- Java使用强大的Elastisearch搜索引擎实例代码
- Java技术_每天掌握一种设计模式(003)_使用场景及简单实例(创建型:工厂方法)
- Java技术_每天掌握一种设计模式(006)_使用场景及简单实例(创建型:原型模式)
- 关于使用Java实现的简单网络爬虫Demo
- 粒子集群算法简单实例 java实现
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
- Java使用redis的简单demo
- jquery demo - jquery表格插件flexigrid的java简单应用实例
- java使用jdbc连接数据库简单实例
- Java使用递归解决算法问题的实例讲解
- Java日志 - log4简单使用实例及其再次封装
- MAC下使用OpenCV的实例简单Demo
- echarts在.Net中使用实例(一) 简单的Demo