您的位置:首页 > 其它

一个例子试着说明算法

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

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

算法在计算机执行程序中加入人的思维,进而提高运算效率。当我们在编写性能要求的软件时,将一些关键代码使用优化算法是有必要的。当然,我们也要避免草木皆兵,写任何代码都陷入算法的优化,进而让项目进度缓慢前行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐