vlambda博客
学习文章列表

数据结构与算法:带你从入门到精通


数据结构与算法:带你从入门到精通



● 为什么要学数据结构?

现在,无论是生活中的购物、出行,还是工作中的数据处理、工业控制和信息管理都可以由计算机帮助我们完成。计算机在迅速改变人们活动方式的同时,也对处理问题的方法提出了新的要求。为了让计算机能把任务做好,我们就必须写出“好”的程序,这就要求人们在处理问题之前,认真地分析任务中有哪些数据需要处理,以及这些数据之间有什么样的关系,然后把这些数据以最适当的方式表示出来。要做到这一点,就必须学习数据结构。

● 数据结构的由来

1968年,美国的 Donald E.Knuth(高德纳) 教授在其所写的《计算机程序设计艺术卷1:基本算法》中,较系统地阐述了数据的逻辑结构和存储结构及其操作,开创了数据结构的课程体系。同年,数据结构作为一门独立的课程,在计算机科学的学位课程中开始出现。


20世纪70年代初出现了大型程序,软件也开始相对独立,结构化程序设计成为程序设计方法学的主要内容。人们越来越重视“数据结构”,认为程序设计的实质是“对确定的问题选择一种好的结构”+“设计一种好的算法”。

● 数据结构的概念

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法。


数据的逻辑结构就像人的思想和精神,它们看不见、摸不着,如队列、栈、树、图等。而数据的物理结构就像人的血肉和骨骼,看得见,摸得着,实实在在,如数组、链表等。


数据的逻辑结构和物理结构是数据结构的两个密切相关的方面,同一数据的逻辑结构可以对应不同的存储结构。算法的设计取决于数据的逻辑结构,而算法的实现依赖于指定的存储结构。


通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。


数据结构


算法


数据结构与算法:带你从入门到精通


● 算法的概念

算法是描述解决问题的方法。如今普遍认可的对算法的定义是:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。简单来说,算法是为求解某个问题而设计的步骤序列,求解同样的问题,不同的人写出的算法可能是不同的(类似数学中的一题多解,既有简洁的解法,也有复杂的解法)。算法的执行效率与数据结构的优劣有很大的关系。

● 数据结构和算法的关系

著名的计算机科学家图灵奖获得者N.Wirth(沃思)教授给出了一个著名的公式:

数据结构 + 算法 = 程序

这说明数据结构和算法是程序的两大要素,二者相辅相成,缺一不可。


数据结构与算法之间存在着本质联系,在某一类型数据结构上总要涉及其上施加的运算,而只有通过对运算的研究,才能清楚地理解数据结构的定义和作用;在涉及运算时,总要与该算法所处理的对象和结果数据等联系起来进行考虑。


最后,我们举一个例子来说明程序、数据结构、算法和程序语言的关系。比如,我们做的一道数学题,一道题目就是实际需求,那么我们的回答则是解决方案(程序),我们在解题过程中使用的xy变量就是数据结构,公式则是算法,而程序语言就是实现解题的工具。

文章大部分资料来自《数据结构与算法(C语言版)》

  主编:李忠月  虞铭财

  ISBN:978-7-301-30284-2

  定价:45.00元

数据结构与算法:带你从入门到精通


● 本书特色

1.记住数据结构,理解算法思想

本书图文并茂。一图值千言,意思是用上千个字描述不明白的东西,很可能一张图就能解释清楚。本书基本上做到重点、难点部分的讲解都有相关的图示,有的内容通过多图逐步分解剖析。


例如:如果用如下语句调用createList()函数:SeqList*L= createList(5),则得到了一个空的顺序表。

数据结构与算法:带你从入门到精通


如果看懂了上图,我们就能更好地理解顺序表的插入、删除、查找等算法描述。

2.编程实现和应用

本书对算法思想进行了详细地阐述,将用文字描述的算法步骤与用类C语言表述的算法描述一一对应,能够提高读者将算法转化为程序的能力,真正能够提高算法设计与算法实现的能力。

3.利用好微课

为满足读者对在线开放学习的需求,对一些重要的知识点、重要的算法、难懂的算法,本书有配套的微课资源,读者可以通过扫描二维码观看。通过这种方式,读者能重复学习,做到攻克重点、难点,不留学习的死角。

点击边框调出视频工具条
   


 • END • 

微店 · 北京大学出版社

  职业教育编辑部

   ·扫一扫购买·