数据结构-概述
概述
数据结构是什么?
-
数据结构是一门
研究组织数据方式
的学科,有了编程语言也就有了数据结构。 -
数据结构是相互之间存在一种或多种特定关系的数据元素的集合
数据结构的起源
早期人们都把计算机理解为数值计算工具,就是感觉计算机当然是用来计算的,所以计算机解决问题,应该是先从具体问题中抽象出一个适当的数据模型,设计出一个解此数据模型的算法,然后再编写程序,得到一个实际的软件。可现实中,我们更多的不是解决数值计算的问题,而是需要一些更科学有效的手段(比如表、树和图等数据结构)的帮助,才能更好地处理问题。所以数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。
1968年
《计算机程序设计艺术》第一卷《基本算法》中,较系统地阐述了数据的逻辑结构和存储结构及其操作,开创了数据结构的课程体系。
1968年
数据结构作为一门独立的课程,在计算机科学的学位课程中开始出现。计算机相关专业的学生开始学习《数据结构》。
70年代初
出现大型程序,软件相对独立,结构程序设计成为程序设计方法学的主要内容,人们越来越重视“数据结构”,
认为程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。可见,数据结构在程序设计当中占据了重要的地位。
基本概念和术语
1.数据:描述客观事物的符号,能够输入到计算机中,被计算机识别并操作
数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。
- 对于整型、实型等数值类型,可以进行数值计算
- 对于字符数据类型,就需要进行非数值的处理
- 对于声音、图像、视频等其实是可以通过编码的手段变成字符数据来处理的
2.数据元素:是组成数据的、有一定意义的基本单位,在计算机中统称作为整体处理(也称为记录)
3.数据项:数据不可分割的最小单位
在数据结构这门课程中,我们把数据项定义为最小单位,是有助于我们更好地解决问题。所以,记住了,数据项是数据的最小单位。
但真正讨论问题时,数据元素才是数据结构中建立数据模型的着眼点。
就像我们讨论一部电影时,是讨论这部电影角色这样的“数据元素”,而不是针对这个角色的姓名或者年龄这样的“数据项”去研究分析。
4.数据对象:性质相同的数据元素的集合,是数据的子集
在实际应用中,处理的数据元素通常具有相同性质,在不产生混淆的情况下,我们都将数据对象简称为数据。
数据结构与算法的关系?
数据结构是算法的基础。
程序 = 数据结构 + 算法
数据结构分为两大类
线性结构
非线性结构
- 树
- 堆
- 图
- 散列表
线性结构 是最常用的数据结构
-
特点是数据元素之间 存在
一对一
的线性关系- 顺序储存结构(数组/顺序表)
- 链式储存结构(链表)
十大常用算法
- 二分查找(非递归)
- 分治算法
- 动态规划
- 贪心算法
- KMP算法
- 马踏棋盘算法
- 普里姆算法
- 迪杰斯特拉算法
- 佛洛伊算法
- 克鲁斯卡尔算法
本系列笔记主要按尚硅谷教程的讲解顺序,使用Java代码实现各种数据结构,同时参考《大话数据结构》一些理论知识。