CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > Java技术

Java语言深入:从算法开始提高效率

作者: challengehope,  出处:IT专家网论坛, 责任编辑: 包春林, 
2008-05-15 04:00
  前几天看了一个文章,说明了怎样提高程序的效率,我看到的一个观点就是从算法分析开始,对我有比较深的感触,特写下了下面的程序和大家共同进步.

  public final class SampleArithmeticAnalyse {

  /**

  * 私有的构造方法

  */

  private SampleArithmeticAnalyse(){

  //防止外部建立实例

  }

  /**

  * 计算给定开始和结束以及步长的和。< br>

  * < pre>

  * 算法:

  * 简单的累加

  * < /pre>

  * @param start 开始

  * @param end 结束

  * @param step 步长

  */

  public static long sumNormal(final long start ,final long end , final long step){

  long sum = start ;

  long begin = start;

  while(begin < end){

  begin += step;

  sum += begin;

  }

  return sum;

  }

  /**

  * 计算给定开始和结束以及步长的和。< br>

  * < pre>

  * 算法:

  * 根据 sum =(begin + end)/2 * ((end -begin)/step + 1)推导。

  * < /pre>

  * @param begin 开始

  * @param end 结束

  * @param step 步长

  */

  public static long sumEspecially(final long begin ,final long end , final long step){

  return (begin + end) * (end - begin + step) / (2 * step);

  }

  }

  // 测试代码

  package com.free.test;

  import com.free.source.SampleArithmeticAnalyse;

  import junit.framework.TestCase;

  public class TestSampleArithmeticAnalyse extends TestCase {

  /*

  * Test method for 'com.free.source.SampleArithmeticAnalyse.sumNormal(int, int, int)'

  */

  public void testSumNormal() {

  long begin = System.currentTimeMillis();

  assertEquals(SampleArithmeticAnalyse.sumNormal(1,1000000001,2),250000001000000001l);

  long end = System.currentTimeMillis();

  System.out.println("SampleArithmeticAnalyse.sumNormal Cost: " + (end - begin)+" Mills!" );

  }

  /*

  * Test method for 'com.free.source.SampleArithmeticAnalyse.sumEspecially(int, int, int)'

  */

  public void testSumEspecially() {

  long begin = System.currentTimeMillis();

  assertEquals(SampleArithmeticAnalyse.sumEspecially(1,1000000001,2),250000001000000001l);

  long end = System.currentTimeMillis();

  System.out.println("SampleArithmeticAnalyse.sumEspecially Cost: " + (end - begin)+" Mills!" );

  }

  }

  通过上面的测试代码可以很明显的看出效率的提升可以从算法开始。

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅

       
  • 周排行榜
  • 月排行榜
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2007, ChinaByte
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i