作为自动化专业的,好歹也能写出一点小程序,然而很多电子类的本科生是没有接触过数据结构的,仅仅学习C语言而不精通数据结构的话不得不说是一种遗憾,下面就一最简单的例子来说明数据结构是如何体现算法之美的。例如一个简单的求和题目,计算1+2+3+……+100结果的程序,看到这个题目我想大多数人首先会想到下面的C语言代码(或者其他语言的代码):
int i, sum = 0, n = 100;
for(i = 1; i < = n; i++)
{
sum = sum + i;
}
printf(" %d ", sum);
这是最简单的计算机程序之一,它就是一种算法。然而我们伟大的数学家高斯是这样进行阐述的:
用程序来实现如下:
int i, sum = 0,n = 100;
sum = (1 + n) * n / 2;
printf("%d", sum);
神童就是神童,他用的方法相当于另一种求等差数列的算法,不仅仅可以用于1加到100,就是加到一千、一万、一亿(需要更改整型变量类型为长整型,否则会溢出),也就是瞬间之事。但如果用刚才的程序,显然计算机要循环一千、一万、一亿次的加法运算。人脑比电脑算得快,似乎成为了现实。
谨以此开始我新的学习之路