Java数据机构和算法中文第二版
基本知识:
- 数据结构是对计算机内存中(又时在磁盘中)的数据的……种安排。包括数组、链表、栈、二叉树、哈希表等;是指数据在计算机内存空间中或磁盘中的组织形式。
- 正确选择数据结构会使程序的效率大大提高。
- 算法是完成特定任务的过程。如:查找一条特殊的数据项或对数据进行排序。
- 算法经常通过类的方式实现。
- 数据库是指由许多类似的记录组成的数据存储的集合。
数据结构的特性:
数据机构 | 优点 | 缺点 |
---|---|---|
数组 | 插入快,如果知道下标,可以非常快地的存取 | 查找慢,删除慢,大小固定 |
有序数组 | 比无序的数组查找快 | 删除和插入慢,大小固定 |
栈 | 提供后进先出方式的存取 | 存取其他项很慢 |
队列 | 提供先进先出方式的存取 | 存取其他项很慢 |
链表 | 插入快,删除快 | 查找慢 |
二叉树 | 查找、插入、删除都快(如果树保持平衡) | 删除算法复杂 |
红黑树 | 查找、插入、删除都快。树总是平衡的 | 算法复杂 |
2-3-4树 | 查找、插入、删除都快。树总是平衡的。类似的树对磁盘存储有用 | 算法复杂 |
哈希表 | 如果关键字已知则存取极快。插入快 | 删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分 |
堆 | 插入、删除快,对最大数据项的存取很快 | 对其他数据项存取慢 |
图 | 对现实世界建模 | 有些算法慢且复杂 |
除数组之外都可以被认为是抽象数据结构。