一个例子试着说明算法

看过一书《大话数据结构》,此乃风清扬前辈所著,此书为我们阐述了数据结构及算法的知识。程序的编写常谈到算法的重要性,曾经我也不以为然,如大部分人所想:硬件性能越来越高,算法所带来的优化也无关紧要了。其实不然,有时间算法的优化对程序性能的提高远远超出硬件的优化。

package cn.windy;
 
 
/**
 * 通过求1~n的和,阐述何为算法
 * @author JIL
 *
 */
public class SumDemo {
    public static int N=100;
    public static void main(String[] args){
        SumDemo sumDemo=new SumDemo();
        long sum1Begin=System.currentTimeMillis();
        sumDemo.sum1(N);
        System.out.println("sum1() time:"+String.valueOf(System.currentTimeMillis()-sum1Begin));
        long sum2Begin=System.currentTimeMillis();
        sumDemo.sum2(N);
        System.out.println("sum2() time:"+String.valueOf(System.currentTimeMillis()-sum2Begin));
    }
     
    public void sum1(int n){
        System.out.println(">>n:"+n);
        int sum=0;
        for(int i=1;i<=n;i++){
            sum+=i;
        }
        System.out.println("sum1():"+sum);
    }
     
    public void sum2(int n){
        System.out.println(">>n:"+n);
        int sum=0;
        sum=(1+n)*n/2;
        System.out.println("sum2():"+sum);
    }
}

此段代码是我们从小就知道的一个问题---1到n求和的问题,当n为100时,我们可以得到如下结果

我们能看出使用sum2()所提出的方案在n=100的情况下已经优于常规算法,我们将n设为更大的数量级更能发现sum1()及sum2()的运行时间差异。当数量级到一定程度,人脑使用sum2()的算法就会比sum1()的算法快。

        算法在计算机执行程序中加入人的思维,进而提高运算效率。当我们在编写性能要求的软件时,将一些关键代码使用优化算法是有必要的。当然,我们也要避免草木皆兵,写任何代码都陷入算法的优化,进而让项目进度缓慢前行。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值