目录
说明:
该系列主要是对数据结构学习的一些笔记,心得一些进行记录,同时会实现一些认为有必要的数据结构及算法,有错误还希望指出,个人认为不论是刚学习还是复习的小伙伴都有参考的价值。
参考书:
数据结构与算法分析(C++版)-电子工业出版社,我不太清楚出到了第几版,越新越好吧,本人用的第三版,后简称书一。
数据结构高分笔记-天勤,每年都会新出,适合考研的同学,该系列也是以该书为主,后简称书二。
预备知识:
-
数学基础:集合和关系、排列组合、对数、级数、递归、常用数学术语(计量单位、数学符号[例如上取整,下取整,取模等]),个人觉得这些数理基础了解会用就行。
-
语言基础:C或C++
-
时间复杂度和空间复杂度:基本概念、常用时间复杂度比较、计算一个算法的时间复杂度(数量级)、空间复杂度,这一部分具体可在书一中学习。计算时间复杂度具体方法可以参考书二。
-
数据结构基本概念:参考书二,相比书一较为明了,注意怎样区分逻辑结构以及物理结构(存储结构)。
-
数据:指输入到计算机中并且被计算机程序处理的符号的总称,例如整数、字符串等。
-
数据元素:数据的基本单位,也是数据结构讨论的最小单位,在程序中通常作为一个整体考虑,例如一本书为数据元素,而它的信息(书名、作者等)作为一个数据项。
-
数据对象:是性质相同的数据元素集合。
-
数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合。包括逻辑结构、存储结构和对数据的运算。
-
数据的逻辑结构:是对数据之间关系的描述,它与数据的存储结构无关,归纳起来两大类:线性结构、非线性结构。
-
数据的物理结构(存储结构):是数据的逻辑结构在计算机中的表示(又称映像),包括数据元素的表示和关系的表示,常用四种:顺序存储方法、链式存储方法、索引存储方法、散列存储方法。
-
-
算法的基本概念:两本书结合来写的
-
问题、算法和程序:
-
问题:一个需要完成的任务,即对应一组输入就有一组对应的输出。
-
算法:是指解决问题的一种方法或一个过程,如果将问题看做函数,那么算法就是把输入转化为输出。也可以理解成为由基本运算及规定的运算顺序所构成的完整解题步骤,其五个特性如下(两本书中不一样,但是我更倾向于书二,更容易理解):
- 有限性:确保能够执行有限步后结束。
- 确定性:算法每一步骤都必须有明确的定义。
- 输入:---
- 输出:---
- 可行性:算法中所有操作都必须通过已经实现的基本操作进行运算,并且在有限次内实现,而且人们用笔和纸做有限次运算后也可完成。
-
程序:一个计算机程序被认为是使用某种程序设计语言对一个算法的具体实现。
-
-
算法设计目标:正确性(基本)、可读性、健壮性、高效率与低存储量需求(时间复杂度和空间复杂度?)
-
结尾:
预备知识及简单介绍就结束了,感觉很多东西就提了一下,其实个人觉得也差不多,我觉得比较重要的部分还在后面的具体的数据结构和算法部分,在这篇文章中,我把本人觉得要掌握的东西都提到了(两本书绪论),其他的内容也可以自己看书学习,欢迎与我交流。