我们眼中的数据结构与算法
数据结构与算法的重要性
计算机领域中存在一个经典公式:数据结构+算法=程序,由此可见数据结构与算法的重要性。
任何一种算法在实际应用时都会受到***资源限制***——可用来存储数据的全部空间以及执行任务的限制时间。计算机功能日益强大,处理器的速度和内存容量在不断提升,但与此同时,人们对程序的需求也在不断提高,需要计算机解决的问题更加复杂、规模更大。那么选用更合适的数据结构以及更高效的算法就显得尤为重要。数据结构与算法是程序的基础,很大程度上决定了程序的***运行效率***,在面对大规模数据时,不同的数据结构可能会使程序的运行时间相差几万倍。因此,对于程序本身来说,数据结构与算法的设计和选择能够决定程序运行的阈值。
对于我们而言,精通数据结构与算法能够帮助我们更好地理解程序运行原理,由此能够编写出效率更高的代码。学习计算机,绝不能仅仅学会程序语言的应用,对于任何一门知识都要知其然知其所以然,理解了背后的原理才能帮助我们更好地掌握知识。学会高级程序语言只是掌握了翻译能力,学会数据结构与算法才是掌握了写作能力, 数据结构与算法能够让我们从只会敲代码的==”工具人“转变为懂得如何设计程序的开发者==。
数据结构与算法的发展史
-
数据结构发展史
数据结构是在计算机科学与技术的发展过程中产生的,当计算机需要处理的数据由简单的数值转变为具有一定结构和关系的系列数据时,简单的计算已经不能满足人们的需求,由此诞生了数据结构,用以处理复杂的数据之间的联系。
1968年克努斯教授开创了数据结构的最初体系,他所著的《计算机程序设计艺术》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。
70年代初,数据结构作为一门独立的课程正式进入大学课堂。
-
算法发展史
早在中国古代,算法已经被广泛应用与记载,”算法“一次最初起源于《周髀算经》。在中学时我们就曾学习过中国古代的一些经典算法,例如辗转相除法、秦九韶算法、割圆术等等。
算法最初出现在数学计算中。9世纪波斯数学家al-Khwarizmi最初在数学上提出了算法这一概念,“算法”原为"algorism",意思是阿拉伯数字的运算法则,在18世纪演变为"algorithm"。欧几里得算法被人们认为是史上第一个算法。
20世纪的英国数学家图灵提出了著名的图灵论题,并提出一种假想的计算机的抽象模型,这个模型被称为图灵机。图灵机的出现解决了算法定义的难题,图灵的思想对算法的发展起到了重要作用。
1834年,巴贝奇提出了分析机的概念,由此将算法与计算机结合起来。
此后,随着计算机科学与技术的不断发展,人们设计创造了各种算法,算法在计算机领域中得到广泛应用。
-
数据结构与算法的结合
克努斯教授所著的《计算机程序设计艺术》中对数据结构与算法进行了权威的阐释,数据结构与算法被结合起来应用于计算机领域,将数据结构与算法巧妙结合能够帮助人们设计出更加完美、效率更高的程序。
## 数据结构与算法的名人轶事
-
艾伦·麦席森·图灵
图灵被誉为计算机科学之父,在他的“论可计算数及其在判定问题中的应用”一文中,从一个全新的角度定义了可计算函数,给计算下了一个完全确定的定义,而且第一次把计算和自动机联系起来,对后世产生了巨大的影响,这种“自动机”后来被人们称为“图灵机”。这种数据模型的提出,极大推动了算法的发展。
-
唐纳德·克努特
克努特教授在29岁提出算法(Algorithm)与数据结构(Data Structure)这两个基本概念。
算法方面,克努特教授与他的学生共同设计出了Knuth-Bendix算法和Knuth-Morris-Pratt算法,应用于数学领域。
在编译器设计方面,还曾设计出著名的LR(k)文法。
其代表作品《计算机程序设计的艺术》已经长期被公认为经典计算机科学的定义性描述,对计算机科学领域产生了深远影响。
## 对数据结构与算法课程的期望
数据结构与算法对我来讲是一门陌生的课程,第一堂课结束之后,我对那些计算机科学奠基人产生了深深的敬佩——敬佩他们的创造力。”图灵提出了图灵机这一数学模型“,”提出“这两个字显得如此轻松,但我们无法想象这两个字背后隐藏了多么深邃的思考、多么具有预见性的想法。 因此,数据结构与算法对我来说是深奥而神秘的。了解了其发展历程就仿佛窥探到了异世界的起源一般,令人震撼,我也因此对这门课程产生了超出预料的热情和求知欲。
对于自己的期待:
我希望自己能够一直保持这份热情与求知欲,不会因为其晦涩难懂而产生畏难心理。
对于课程的期待:
希望老师能用一种较为通俗生动的方法讲解,多多讲解例题。
希望这门课程能够让我更深刻地理解程序设计,帮助我设计出更加高效的程序。
共有条评论 网友评论