Apr 2 2020 - What I reviewed

**仅用于复习,参考自己的笔记和其他博客(见原博地址)

  1. interface(接口)&abstract class(抽象类)
    abstract class强调对象是什么,interface强调实现接口的对象能做什么。如卡车、汽车等,都是对车的抽象,所以可以把车定义为一个抽象类;人吃东西、动物吃东西,所以可以把吃东西定义成一个接口,让人和动物去实现。
    总结:类相似用abstract class,类不同用interface;访问除public的用abstract class,只访问public用interface;希望指定行为,但不关心谁来实现(implement)用interface。
    相同点:interface和abstract class都不能被实例化。
    不同点(abstract class):可申明变量,public/protected/private。
    不同点(interface):所有字段都是自动public, static, final。

  2. Public, protected, private
    public, protected, private
    protected: 可以被同package的访问
    private:子类不能访问父类的私有成员

  3. HashTable(散列表、哈希表)
    综合了数组array(查找容易,插入删除困难)和链表LinkedList(查找困难,插入删除容易)的特点。
    优点:查找、插入、删除效率高,O(1)。
    缺点:因为基于数组,所以难扩建,当table被填满后,性能会下降。
    借鉴内容参考博客原址:第8章查找——哈希表(散列表)原理详解(大话数据结构)

  4. Garbage Collection(垃圾回收)
    垃圾回收方案用来提供固态硬盘的写入性能;垃圾回收主要将不必要存在且浪费空间的块回收,来增加可用的块数。
    三个任务:根据算法从脏队列中选出需要擦除的块;将此块的有效内容搬到另一个块;擦除前一个块。
    参考博客原址:Garbage Collection

  5. Binary Search Tree(二分查找树)
    特点:left<node<right,结合了数组array(查找容易,插入删除困难)和链表LinkedList(查找困难,插入删除容易)的优点。
    在Java中要实现Comparable接口!
    参考博客原址:数据结构-二分搜索树(Binary Search Tree)

  6. parallelization&memorization
    parallelization:平行处理,几个任务可以同时进行
    memorization:存储函数调用的结果;没必要重复已经做过的工作

  7. Heap
    特点:完全二叉树,堆中某个节点的值总是不大于或不小于父节点的值。
    码:操作、Heaps&Trees、Heaps&Stacks、BubbleUp、BubbleDown
    在这里插入图片描述
    在这里插入图片描述
    参考博客原址:heap(max-heap最大堆、min-heap最小堆)
    参考博客原址:

  8. HashMap&HashTable
    HashMap:允许一个null key和多个null vals;只包含唯一元素;无序
    HashTable:array;唯一元素;不允许有null key/null vals;需要使用HashCode

  9. Graph(图)
    G = (V, E)
    V: a set of vertices
    E: a set of edges
    图由节点(node)和边(edge)组成,一个节点可能与众多节点直接相连,这些节点被称为“邻居”。
    边(edges):由一对(v, w)构成,v和w在V里。
    度(degree):依附于顶点的的边的数目
    出度:以任意一顶点为起点的弧的数目称为该顶点的出度
    入度:以任意一顶点为终点的弧的数目称为该顶点的入度
    顶点(vertex):代表一个实体
    路径(path):从顶点a到顶点b的边,path是edge的序列
    邻居(neighbor/adjacency):若两个顶点同边
    回路(cycle):一个起点终点在同一个节点的路径(一个环)
    弧头:弧的终端点
    弧尾:弧的初始点
    loop:给自己的圈套(an edge directly form a node itself)
    权(weight):边的cost,或图的边/弧具有与它相关的数
    弧:有向图中连接顶点的称作弧
    连通:在无向图中,如果从顶点a到顶点b有路径,则称a和b是连通的
    完全图:在无向图中有n/2(n-1)条边的无向图称为完全图,或所有边都顶点都连上了
    有向完全图:具有n(n-1)条弧的有向完全图称为有向完全图,或所有顶点啥都连上了
    稀疏图:有很少条边或弧的图
    稠密图:与稀疏图相反
    无圈图(acyclic graph):没有任何回路(没环)
    网: 每个边或弧都附加一个权值的图,称为带权图。而带权的连通图称为网
    网络:带权的连通图称为网络
    连通图(connected):至少有一条路径连接起所有顶点or相通
    强连通图(strongly connected):所有顶点有到所有点的路径
    有向图(directed graph):有指明方向
    带权图(weighted graph):边被赋予一个权值,权值是一个数字,能代表物理距离、时间、或费用
    参考博客原址:数据结构 图(一)

  10. Breadth-first search(广度优先搜索)
    搜索范围从起点开始逐渐向外延伸,即先检查一度关系,再检查二度关系。
    将两个顶点之间的路径按下所有路径一步。探索所有的邻居,然后邻居的邻居…(通常通过维护要访问的顶点队列来实现)
    特点:
    在unweighted graph里,保证返回最短距离;在weighted graph里不会总得到最佳成本
    很难找到路径(因为BFS正在并行地探索许多路径,因此存储路径并不容易)
    DFS比BFS使用更少内存,并更容易重构路径,但DFS不一定总能找到最短路径
    跟踪邻居
    在这里插入图片描述
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值