- 什么是数据结构和算法?
- 学习后的好处是什么?
- 为什么不能只是用数组和for循环来处理数据?
- 何时何地使用在本书学到的只是才能算有意义?
- 数据结构和算法能起到什么作用?
- 数据结构的概述
- 一些定义
- 面向对象编程
- 软件工程
- 对于C++程序猿的Java
- Java数据结构的类库
数据结构和算法能起到什么作用?
数据结构:对计算机内存中(有时在磁盘中的)数据的一种安排。
数据结构包括:数组、链表、栈、二叉树、哈希表。
算法:对这些结构中的数据进行各种处理。
运用场景,解决的问题:
- 现实世界数据存储
- 程序猿的工具
- 建模
现实世界数据存储:
现实世界数据:那些描述处于计算机外部的物理实体的数据。
问题:如何将旧式的索引卡片系统更新为计算机程序?
需要思考的问题:如何在计算机内存中安放数据?
所用的方法适用于100张卡片吗?
所用方法能够快速的插入新卡片和删除老卡片吗?
他能快速查找一张特定的卡片吗?
若想将卡片按照字母的顺序排列,又该如何去安排?
程序员的工具:不为用户所接触的数据存储结构。比如:程序员经常将诸如栈、队列和优先级队列等结构当作工具来简化 程序或一些操作。
现实世界的建模:有些数据结构能够直接对真实世界的情况构造建模。其中最重要的数据结构就是图,图可以表示某一工程中的任务安排关系,电路的连接等。
数据结构的概述:
数据结构的特性:
数据结构 | 优点 | 缺点· |
数组 | 插入快,如果知道下表,可以非常快的存取 | 查找慢,删除慢 |
有序数组 | 比无序的数组查找快 | 删除和插入慢,大小固定 |
栈 | 提供后进先出方式的存取 | 存取其他项很慢 |
队列 | 提供先进先出方式的存取· | 存取其他项很慢 |
链表 | 插入快,删除快 | 查找慢 |
二叉树 | 查找、插入、删除都快(如果树保持平衡) | 删除算法复杂 |
红-黑树 | 查找、插入、删除都快。树总是平衡的 | 算法结构复杂 |
2-3-4 树 | 查找、插入、删除都快。树总是平衡的,类似的树对磁盘存储有用 | 算法复杂 |
哈希表 | 如果关键字已知则存取极快,插入快 | 删除慢,如果不知道关键字则很慢,对存储空间使用不充分 |
堆 | 插入、删除快,对最大的数据项的存取很快 | 对其他的数据项存取慢 |
图 | 对现实世界建模· | 有些算法慢且复杂 |
算法的概述:
小 结
数据结构是指数据在计算机内存空间中或磁盘中的组织形式。
正确选择数据结构会使程序的效率大大提高。
数据结构的例子有数组、栈和链表。
算法是完成特定任务的过程。
在Java中,算法经常通过类的方法实现。
本书中介绍的大部分数据结构和算法经常被用来建造数据库。
一些数据结构的用途是作为程序员的工具:它们帮助执行算法。
其他数据结构可以模拟现实世界中的情况,例如城市之间的电话线网。
数据库是指由许多类似的记录组成的数据有储的集合。
一条记录经常表示现实世界中的一个事物,例如一名雇员或一个汽车零件。
一条记录被分成字段。每个字段都存储了由这个记录所描述事物的一条特性。
一个关键字是一~条记录中的一.个字段,通过它可以对数据执行许多操作。例如,人事记录可以通过LastName字段进行排序。