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

鼎盛823

鼎盛823

2016-02-19 10:07

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的java 使用简单的demo实例告诉你优化算法的强大教程,一起来看看吧!超容易上手~

这里的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/codebr
      * 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/codebr
      * 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的值,来测试他们所消耗的系统时间....

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

我机器运行情况:
代码如下:

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
java 使用简单的demo实例告诉你优化算法的强大

JAVA简单分组的算法实现

编程语言 网络编程
JAVA简单分组的算法实现

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java递归算法的使用分析

编程语言 网络编程
Java递归算法的使用分析

Java中 shuffle 算法的使用

编程语言 网络编程
Java中 shuffle 算法的使用

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

java类中使用Jfreechart的简单实例

编程语言 网络编程
java类中使用Jfreechart的简单实例

java循环练习的简单代码实例

编程语言 网络编程
java循环练习的简单代码实例

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

聚美优品301活动使用了红包的订单退货时红包退么

聚美优品301活动使用了红包的订单退货时红包退么

Android图片处理实例介绍(图)

Android图片处理实例介绍(图)
下拉加载更多内容 ↓