Java数据结构和算法是对Robert Lafore的Java数据结构和算法学习的以自己方式的总结,里面可能会有绝大部分的内容和书上描述差不多(原谅我的语文不怎么好)。
1.数据结构和算法的作用
数据结构是对计算机内存或者磁盘中的数据的一种安。数据结构大致有数组、链表、图、二叉树等等。而算法是对数据结构中存储的数据进行一系列处理。大致可分为三类情况:现实世界数据的存储、程序员工具、建模。
1.1现实世界数据的存储
现实世界数据指的是在计算机中存储的外部物理数据,比如:一张电话薄记录的一个人信息,一条存货记录描述了一种商品。
在现实生活中我们也许可以通过一本本子来记录这些信息,随着科技的发展,现在我们可以将这些信息存储到计算机上,那么就需要考虑一下一些问题:
- 怎么在计算机内存中存放这些数据?
- 怎么删除存储的数据?
- 怎么插入新的数据?
- 怎么进行快速的查找自己想要的数据项?
- 怎么对已存储的数据按自己想要的方式排序?
- 这种存储的方式所能适用的数据大小是多少?
1.2程序员的工具
有些数据结构是不打算让用户接触的,而是仅被程序本身所接触。程序员可以通过栈、队列和优先级队列等数据结构来作为工具简化其他操作。
1.3建模
有些数据结构可以对生活当中的情况进行建模。其中比较重要的建模数据结构是图,通过图我们可以来表示城市之间的航线,旅行的路径,电路的连接等
2.数据结构概述
在Java当中主要的数据结构及其特性如下:
- 数组
插入快,如果知道下标的话,能够非常快的存储;查找慢,删除慢,大小固定。 - 有序数组
比无序数组查找快;删除和插入慢,大小固定。 - 栈
提供先进后出的方式存取;存取其他项很慢。 - 队列
提供先进先出的方式存取;存取其他项很慢。 - 链表
插入快,删除快;查找慢。 - 二叉树
插入、删除、查找都很快(如果二叉树平衡);删除算法复杂。 - 红-黑树
插入、删除、查找都很快,树总是平衡的;算法复杂。 - 2-3-4树
插入、删除、查找都很快,树总是平衡的,类似的树对磁盘存储有用;
算法复杂。 - 哈希表
如果关键字已知,对数据的存储很快;删除慢,在不知道关键字时,对数据的存储很慢,对存储空间使用不充分。 - 堆
删除快、插入快,对最大数据项存取很快;对其他数据项存取慢。 - 图
对现实世界建模;有些算法复杂。