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

2016-02-19 10:07 9 1 收藏

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

【 tulaoshi.com - 编程语言 】

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

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

即: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://www.tulaoshi.com/bianchengyuyan/)

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

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

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

来源:http://www.tulaoshi.com/n/20160219/1593429.html

延伸阅读
精彩实例告诉你如何捕捉孩子的可爱瞬间   在日常生活中,拍摄孩子的一举一动。要拍好孩子着实不易,因为他们不会听你指挥,但是这样往往可以拍摄到最自然、真实的效果。你可以偷偷拍摄,或者让他们习惯相机的存在。 表现人物个性最常用的方法就是在肖像照中加入与他们日常生活息息相关的物品。例如说给小孩子拍照的时候,就让他...
这篇文章是前谷歌设计师Brian Nelson ,目前这位毕业于斯坦福的设计高手正在卡耐基隆梅大学继续研读人机交互。作为以为熟知Google的设计方向的设计师,对于Google Now、Google Inbox这类产品有着深入的理解,也正是因此,才有了今天这个Google日历概念设计。 也许就在不久的将来,你的谷歌日历会变得无比强大,更多的内容会以服务的形式聚合进...
标签: Web开发
使用CSS Sprites是在你尽可能地使用其他的优化策略后最后的一招。它将你的所有图片放在一张图中,即你的一张CSS Sprites由10张图片组成,那将避免9次HTTP请求,这减少的9次请求时延,正是加速的加载时间。这也有问题,跟每个HTTP请求的服务器开销一样,需由Apache的子进程管理,占用20MB的内存。你最好帮你的服务器进程减少HTTP请求:卸载...
标签: ASP
  简介 首先简单介绍一下有关加密的背景。由于美国禁止几种密码算法的对外出口的 加密位数(例如SSL的40位加密限制),本文将介绍一种ASP可以使用的简单字符加密算法, 而不是那些受限制的加密算法。其实,这里介绍的加密算法对于一般的运用来说已经足够 解密人麻烦一阵子的了。它的加密基础是最简单的Vernum密码方法,我...
标签: ASP
  在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个 字符串。 下面的代码就是能够同时实现这个功能的函数 Crypt.asp文件 <% Dim g_Key Const g_CryptThis = "Now is the time for all good men to come to the aid of their country." Const g_KeyLocati...

经验教程

175

收藏

75
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部