一个例子试着说明算法

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

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()的算法快。

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

 

你可能感兴趣的:(算法)