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

《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
后序: ACBcode

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

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

复杂数据结构

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

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

相关文章
相关标签/搜索