文档章节

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

奋斗到天明
 奋斗到天明
发布于 2016/05/27 09:53
字数 867
阅读 235
收藏 3

《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章 带权图 好吧,这三个都有点难了,我暂时却步了。

© 著作权归作者所有

上一篇: 二叉树与堆
下一篇: 六个排序算法
奋斗到天明
粉丝 19
博文 112
码字总数 82707
作品 0
昌平
程序员
私信 提问
Android--面试中遇到的问题总结(三)

《Android 开发工程师面试指南 LearningNotes 》,作者是陶程,由梁观全贡献部分。大家可以去知乎关注这两位用心的少年。这份指南包含了大部分Android开发的基础、进阶知识,不仅可以帮助准备...

sealin
2017/02/22
0
0
读书笔记之《Java并发编程的艺术》-并发编程容器和框架(重要)

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
689
1
读书笔记之《Java并发编程的艺术》-并发编程基础

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
4K
8
用思维导图来学java虚拟机,轻松易懂!

说明 本篇文章是对周志明的《深入理解Java虚拟机》的读书笔记,思维导图使用Mindjet MindManager。曾经看到过这样一句话: 关于教育,有一个经典的定义是:把在学校里学到的东西全部忘掉,最...

小刀爱编程
2018/10/12
162
0
BAT等大厂Android面试书单和知识点清单

java是Android开发的基础,在BAT的初面中,会涉及到比较多的java基础知识,所以比较重要,下面我介绍的书籍内容是由浅到深。 1.Thinking in java:这本书被称为Java的三大圣经之一,虽然书比...

android自学
2018/07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot2.0 maven打包分离lib,resources

springboot将工程打包成jar包后,会出现获取classpath下的文件出现测试环境正常而生产环境文件找不到的问题,这是因为 1、在调试过程中,文件是真实存在于磁盘的某个目录。此时通过获取文件路...

陈俊凯
今天
4
0
BootStrap

一、BootStrap 简洁、直观、强悍的前端开发框架,让web开发更加迅速、简单 中文镜像网站:http://www.bootcss.com 用于开发响应式布局、移动设备优先的WEB项目 1、使用boot 创建文件夹,在文...

wytao1995
今天
9
0
小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
今天
8
0
《JAVA核心知识》学习笔记(6. Spring 原理)-5

它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 6.1.1. Spring 特点 6.1.1.1. 轻量级 6.1.1.2. 控制反转 6.1.1....

Shingfi
今天
7
0
Excel导入数据库数据+Excel导入网页数据【实时追踪】

1.Excel导入数据库数据:数据选项卡------>导入数据 2.Excel导入网页数据【实时追踪】:

东方墨天
今天
8
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部