从帕斯卡发明手摇计算机开始,人类用了近四百年时间发明了通用电子计算机,它是一种强有力的计算工具,不但速度快同时还能保证正确性。现在,一般的家用电脑可以提供每秒10亿次的简单计算,谁能驾驭这样的能力,就可以极大的延伸自己的脑力。

现实生活中有许多问题可以用电脑解决,首先需要我们将问题抽象出数学模型,通过程序一步一步地指挥计算机帮我们计算处理,得出最终结果。现在,大量数字传感器的诞生,电脑还可以自动接受信号,自我控制,可以直接操纵机械装置代替人类去解决体力劳动,超越人类的生理极限。

笔者青少年时代曾迷恋过武侠小说中的各种神功、神怪小说中的各种超能力,而西方文化也同样存在对魔法的崇拜,长大时才发现这一切是虚幻的。而程序设计却是真正能驾驭电脑和机器人的魔法,让人类做到原本不可能做到的事情。

尼古拉斯·沃斯说:”程序=数据结构+算法

其中,数据结构(Data Structure)就是数据的组织方式,研究如何高效的存储和读取数据。

而算法(Algorithm)是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。

开始,计算机局限在算术运算、关系运算、逻辑运算等繁重计算上,慢慢的人类将几千年大量的数学智慧运用到了强大的计算机器上,延伸出了大量的计算方法和步骤,称之为算法。几百年前欧拉为解决柯尼斯堡七桥问题和迷宫寻路所研究的图论算法已经被程序化,应用在我们的地图APP上。全世界大量的Coder每天都在为新的或者更高效的算法而努力,从而影响每个人的生活。许多青年才俊也立志成为其中的佼佼者。

计算机科学教育的核心就是编写程序和算法设计。

本网站适合已经学习过C或者C++语言的同学,作为程序设计进阶的学习资料。算法和数据结构彼此依附,本网站侧重算法部分,介绍了几种常用经典算法,是解决问题的常用高效手段。

每章先介绍算法知识,然后给出经典例题详细解答,最后留出网络练习题库,读者可以通过讲练结合的方式去学习。

史钋镭