数据结构
-
前言
数据结构对于程序员来说是无法绕过的一门专业课.对于从未接触过数据结构的小白,提前自学是很有必要的,学习了数据结构,可能会对算法的练习有很大的帮助,另外,这是我的第一篇博客,很兴奋开启这一条道路,希望我可以一直坚持下去.借助博客来记录自己的学习过程。另外有关的程序所用语言为java语言. -
基本概念
1.关于数据结构的官方定义:
(1)数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。------《数据结构,算法与应用》
(2)数据结构是ADT(抽象数据类型Abstract Data Type)的物理实现。—《数据结构与算法分析》2.书架上摆书的实例:在书架上摆放书籍,并且实现新书的插入和指定书籍的寻找,以下是三种不同的方法.
(1)随便放插入新书:随便放 找书:很难寻找
(2)按照首字母放
插入新书:按照首字母插入 找书:二分查找(会在下一篇博客中单独减少并用代码实现)
(3)分出几块不同的区域,存放不同类的书,并且按照书的首字母排放
插入新书:确定书的类别,按照首字母排放 找书:二分查找
结论:1.解决问题的效率和数据的组织方式有关
2.解决问题的效率和空间的利用效率有关(分别用循环法和递归法实现1~N的打印会有差别,会在之后单独的博客中写到)
3.解决问题的效率和算法的巧妙程度有关(用clock tick来测试程序运行时间,后续博客单独可见)
4.有关于抽象数据类型(ADT):
(1)数据类型
*数据对象集
* 数据集合相关联的操作集
(2)抽象(不具体):描述数据类型的方法不依赖于具体实现
*与存放数据的机器无关
*与数据存储的物理结构无关
*与实现操作的算法和编程语言均无关.
它的标准格式:
ADT 抽象数据类型名
Data
数据元素之间逻辑关系的定义
Operation
操作1
初始条件
操作结构描述
操作2
…
操作n
…
endADT