程序在计算机上运行时所消耗的时间取决于下列因素:1.算法采用的策略、算法。2.编译产生的代码质量。3.问题的输入规模。4.机器执行指令的速度。
例:求 1+2+3+..............+n的和?
第一时间我们可能会写出如下函数:
function Sum1(n: Integer): Integer;
var
I: Integer;
Sum: Integer;
begin
Sum := 0;
for I := 1 to n do
begin
Sum := Sum + I;
end;
Result := Sum;
end;
但这样写是不是真的很好?是不是最高效的算法?如果我们回想到小学时有听老师讲过数学家高斯教授上小学时分分钟计算出1+2+3+......+100的故事,我们可能会想到其实可以这样写:
function Sum2(n: Integer): Integer;
var
Sum: Integer;
begin
Sum := (1 + n)*n div 2;
Result := Sum;
end;
Sum1执行次数为:1+(n+1)+n+1=2n+3次。
Sum2执行次数为:1+1=2次。
算法优劣,显而易见。
编后语:其实写这个事例,主要是想说明算法之于程序的重要性,开启后边的编程之路,让人感受到编程之美!