数据结构的理解 以及作用
- 我问过以为前辈我当时问他 数据结构和算法看了能做什么,他当时给我说的,可能对开发的时候的帮助很小,因为它只是存储方式以及对数据结构的了解,其实学习的是一种新的思想如何把现实问题转化为计算机语言的表示。
先来几个经常所见的数据存储
- 一条人事档案记录描述了一位真事人的信息
- 一条存货记录描述了一个真实存在的商品信息
- 一条财务交易描述了一笔支付交易实际填写的支票
- 等等…
程序员的工具
- 并不所有的存储结构都用来存储现实世界的数据,通常情况下,现实世界的数据或多或少会由程序的用户直接存储,但是有些数据结构并不打算让用户接触,他们仅被程序本身所使用,我们经常将诸如栈,队列以及优先级队列等数据结构当做工具来简化另一些操作。
数据结构的特性
数据结构 | 优点 | 缺点 |
---|---|---|
数组 | 插入快,如果知道下标,可以非常快的存储 | 查找慢,删除慢,大小固定 |
有序数组 | 比无序的数组查找快 | 删除和插入慢,大小固定 |
栈 | 提供后进先出的方式存取 | 存取其他项很慢 |
队列 | 提供先进先出的方式存取 | 存取其他项很慢 |
链表 | 插入快,删除快 | 查找慢 |
二叉树 | 查找,插入,删除都快 | 但是算法复杂 |
红黑数 | 查找,插入,删除都快,树总是平衡 | 算法复杂 |
2-3-4 树 | 查找,插入,删除都快,树总是平衡,类似的树对磁盘存储有用 | 算法复杂 |
哈希表 | 如果知道关键字则存取极快,插入快 | 删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分 |
堆 | 插入,删除快,对最大数据项的存取很快 | 对其他数据项存取慢 |
图 | 对现实世界建模 | 有些算法慢且复杂 |
面向对象的几个最重要的特性
- 对象同时包括方法和字段(数据)
- 类是任意数目的对象的说明
- 创建一个对象,要将关键字new和类的名称连用
- 调用一个对象的方法,要使用" . "运算符
java数据结构的类库
- java.tuil包中包含有诸如向量(一个可扩充的数组),栈,库和哈希表等类型的数据结构,无论是java自带的还是第三方开发人员提供的类库,但这些类都是通用的,它们为我们提供了丰富的资源,但只有真正明白数据结构的基础,才能决定是应该写自己的类还是用别人的类。
数据结构的理解的小结
- 数据结构是指数据在计算机内存空间中或磁盘中的组织形式
- 正确选择数据结构会是程序的效率大大的提高
- 数据结构的例子有数组,栈,链表
- 大部分数据结构经常被用来建造数据库
- 一些数据结构的用途是作为程序员的工具,会帮他们执行算法
- 其他数据结构可以模拟现实世界的情况,如城市之间的电话线
- 数据库是指由许多类似的记录组成的数据存储的集合
- 数据库中一条记录经常表示现实世界的一个事物,列入一个汽车零件 一本书
- 数据库中一个记录被拆分成字段,每个字段存储了由这个记录所描述事物的一条特性
- 数据库中一个关键字是一条记录的一个字段,通过它可以对数据执行许多操作
- 可以搜索数据库以便找到关键字字段有定值的所有记录,这个值被称为查找关键字