很大部分转载自 https://blog.****.net/singit/article/details/54898316
数据的逻辑结构:反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。
逻辑结构包括:
集合:数据结构中的元素之间除了“同属一个集合”的相互关系外,别无其他关系。
线性结构:数据结构中的元素存在一对一的相互关系
树形结构:数据结构中的元素存在一对多的相互关系
图形结构:数据结构中的元素存在多对多的相互关系
数据的物理结构是数据结构在计算机中的表示,它包括数据元素的机内表示和关系的机内表示,由于具体实现的方法有顺序、链接、索引、散列等多种,所以,一种数据结构可表示成一种或多种存储结构
数据元素的机内表示:用二进制位的位串表示数据元素。通常称这种位串为节点。当数据元素有若干个数据项组成是,位串各数据项对应的子位串称为数据域,因此,节点是数据元素的机内表示。
关系的机内表示:数据元素之间的关系的机内表示可以分为顺序映像和非顺序映像。
常用两种存储结构:顺序存储结构和链式存储结构
顺序映像借助于元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
非顺序映像借助于元素存储位置的指针来表示数据元素之间的逻辑关系。
常用数据结构分类:
数组:把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组。
栈:是只能在某一端插入和删除的特殊线性表。按照先进后出的原则存储数据
队列:
数据结构 是对计算机内存中的数据的一种安排,它包括数组、链表、栈、二叉树、哈希表等等
可以解决的问题:
现实世界数据存储
程序员的工具
建模
数据结构的特性
数据结构 | 优点 | 缺点 |
数组 | 插入快,如果知道下表,可以快速的存取 | 查找慢,删除慢,大小固定 |
有序数组 | 比无序的数组查找快 | 删除和插入慢,大小固定 |
栈 | 提供后进先出方式的存取 | 存取其他项很慢 |
队列 | 提供先进先出的凡是的存取 | 存取其他项很慢 |
链表 | 插入快,删除快 | 查找慢 |
二叉树 | 查找、插入、删除都快 | 删除算法复杂 |
红-黑树 |
查找、插入、删除都快,树总是平衡的 |
算法复杂 |
2-3-4树 |
查找、插入、删除都快,树总是平衡的,类似的树对磁盘存储有用 |
算法复杂 |
哈希表 |
如果关键字一致,则存取极快,插入快 |
删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分 |
堆 |
插入、删除快,对最大数据项的存取很快 |
对其他数据项存取慢 |
图 |
对现实世界建模 |
有些算法慢且复杂 |
除了数组之外都可以被认为是抽象数据结构(ADT)
继承与多态
继承是指由基类扩展或派生形成一个新类。 继承又称子类化。
多态:指的是以相同的办法处理来自不同类的对象。
基本变量类型
boolean占 一位
byte一个字节
char、short二个字节
int、float 4个字节
long、dubbo8个字节
小结:
数据结构是指数据在计算机内存空间中或磁盘中的组织形式。
正确选择数据结构会使程序的效率大大提高
数据结构的例子有数组、栈和链表
算法是完成特定任务的过程
在java中,算法经常通过类的方法实现
本书中介绍的大部分数据结构和算法经常被用来建造数据库
一些数据结构可以模拟现实世界的情况,例如城市之间的电话线网
数据库是指由许多类似记录组成的数据存储的集合
一条记录经常表示现实世界中的一个事物,例如一个雇员或一个汽车零件。
一条记录被分成字段,每个字段都存储了由这个记录所描述事物的一条特性。
一个关键字是一条记录中的一个字段,通过它可以对数据执行许多操作。
1对许多数据结构来说,可以(插入)一条记录,可以(查找)它,还可以(删除)它
2按照某种顺序对一个数据结构的内容进行重新排列被称为(排序)
3在数据库中一个字段是一条记录的一部分
4当查找一个特定记录时,所使用的那个字段被称为搜索关键字
5在面向对象程序设计中,一个对象可能包含有数据和方法
6一个类是许多对象的蓝图
8当一个对象想做一些事情时,它使用一个方法
9在java中,访问一个类的方法要用(点)操作符
10在java中,boolean和byte是数据类型