《java数据结构和算法》读书笔记

为什么80%的码农都做不了架构师?>>>   hot3.png

《Java多线程编程核心技术》读书笔记

常用数据结构

  1. 第2章 数组
    最简单的数据结构,在查找上比链表有优势,但是在插入与删除上比不上链表。
    Java中的数组有长度限制,为int值。在内存模型中,Array对象头正好有4个字节存储Array的长度。

  2. 第5章 链表 最简单的数据结构,优缺点与数组正好相反。由每个结点构成,每个结点指向下一个结点。
    如果链表存储了链表的头与尾就叫双端链表。如果结点不仅指向下一个结点,还存储上一结点引用那这个链表就是双向链表。

  3. 第4章 栈与队列 栈是先入后出,队列是先入后出。两者可由数组与链表实现。

常用算法

  1. 第3章 简单排序 冒泡排序、选择排序、插入排序三种。时间复杂度上平均情况$O(N^2)$:$O(N^2)$:$O(N^2)$,最坏的情况是$O(N^2)$:$O(N^2)$:$O(N^2)$。但是实际情况是插入>选择>冒泡。插入要比冒泡快一倍。

  2. 第6章 递归 在Java中来说,就是方法调用方法本身。与其对应的动态归化。

  3. 第7章 高级排序 归并排序、希尔排序、快速排序三种。时间复杂度上平均情况$O(NlogN)$:$$O(N^{3/2})$$:$O(NlogN)$,最坏的情况是$O(N*logN)$:$$O(N^{3/2})$$:$O(N^2)$。归并排序需要额外的空间,希尔是插入排序的一个变种,快速排序是六种排序中最好的算法。

中级数据结构

  1. 第8章 二叉树 二叉搜索树的每个结点的左子节点的关键字值小于这个节点,右子节点的关健字值大于或等于这个节点。 遍历树有三种:中序、前序、后序。
	  B
	/	\
	A	C
	

中序: ABC
前序: BAC
后序: ACB

  1. 第12章 堆 堆是一个完全二叉树,一般由数组实现,堆中每个节点的关键字都大于子节点的关键字。
    堆中,一个节点的为2n+1与2n+2,一个节点的父节点是(n-1)/2。
    当插入时,节点从下向上冒,删除时,节点从上向上拉。

  2. 第11章 哈希表 哈希表是将巨大的数字空间压缩成较小的数字空间。在不同的语言有不同的叫法,如字典dict,映射Map等。
    如果出现冲突有两种方案,一是开放地址法,二是开放地址法。

复杂数据结构

  1. 第13章 图 树是图的一种,图的搜索分为深度优先(DFS)与广度优先(BFS)。
    深度优先:访问一个邻接未访问的顶点,标记它,并放入栈中;当没有可访问之后,从栈中弹出一个顶点;当栈中没有顶点时,搜索结束。
    广度优先:访问一个邻接未访问的顶点,这个顶点必须是当前点的邻接点,标记它,并放入队列中;如果当前顶点没有邻接点,那就从队列中取一个顶点为当前顶点;如果队列为空,搜索结束。

  2. 第9章 红黑树、第10章 2-3-4树与外部存储、第14章 带权图 好吧,这三个都有点难了,我暂时却步了。

转载于:https://my.oschina.net/markho/blog/682313

你可能感兴趣的:(《java数据结构和算法》读书笔记)