java数据结构与算法

300 阅读2分钟
数据结构和算法定义(---LeetCode刷题)
1.数据项一个数据元素可以由若干数据项组成
2.数据对象有相同性质的数据元素的集合,是数据的子集
3.数据结构是相互之前存在一种或多种特定关系的数据元素集合
关系定义
逻辑结构(是指数据对象中数据元素之间的相互关系)集合结构 线性结构 树形结构 图形结构
物理结构(是指数据的逻辑结构在计算机中的存储结构)顺序存储结构,链表存储结构

知识点: 线性表 队列 堆栈 树 图论 排序查找

  • [ 数据结构研究的内容]
  • [1. ] | 线性表 | 定义 | | --- | --- | |顺序表 | 1.优点:存储空间连续,允许随机访问,尾插、尾删方便 2.缺点:插入效率低,删除效率低,长度固定| |单链表 | 1.优点:随意进行增删改,插入效率高,删除效率高,长度可以随意修改 2.缺点:内存不连续,不能随机查找 | |双链表 | 1.优点:随意进行增删改,插入效率高,删除效率高,长度可以随意修改,查找效率比单链表快一倍 2.缺点:内存不连续,不能随机查找,但是效率比单链表快一倍 |

顺序表:(ArrayList)-物理和逻辑上连续(简单、占据连续内存、空间效率低、添加删除操作麻烦) 如果1.涉及到排序不要用,2.删除和添加操作比较多时不要用可以用LinkedList,3.顺序查找的时候用

单链表:(HashMap) (断链重新指向新的节点) 查找慢,增删快 image.png

双链表:(LinkedList) image.png

  • [2. ] 软件缓存:内存缓存,数据库缓存,网络缓存 1.内存缓存: 预先将数据写到了容器(list map set)等数据存储单元中,就是软件内存缓存 ----内存缓存淘汰机制: 1.FIFO算法 2.LFU算法 (访问率比较低的剔除掉) 3.LRU算法 (最老的剔除掉,保留最新的)

----LRU算法: 1.新数据插入到链表的头部 2.当缓存命中(即缓存数据被访问),数据要移动到表头 3.当链表满时,将链表尾部的数据丢弃

image.png