《数据结构与算法分析》浅读
作者:互联网
大学时学数据结构与算法,很难懂得到底有什么用处。从业五年后,愈发知道做任何基础的事情须有把握全局、深入细节的能力。
于是重读数据结构与算法,鉴于该书的难度,例如图运算等很难吃透,所以只能算作浅读,读法为:读懂四分之一,并对一些概念和基础的东西做少量的笔记。
以下为粗浅的笔记:
一、数据结构
1、线性结构
A、 栈:先进后出
B、 队列:先进先出
C、 线性表:
D、 链表:单向链表、双向链表、环形链表。例如:LinedList
E、 静态链表:ArrayList是动态扩容的静态链表,每次扩容复制一份,这也决定了它是线程不安全的,因为它是有状态的——即其成员变量size为静态链表长度。
F、 串
2、集合
3、树形结构:二叉树、平衡树(B树、红黑树)、堆
4、图
二、时间复杂度:
二分查找法的时间复杂度为O(LogN),计算原理很简单,每次除以2查找,M次之后得到一个数,所以2的M次方为N,那么M= LogN。
三、树:
B树和B+树:是AVL树的一个变种种,为文件存储系统而服务,因为磁块的读取比CPU的计算更慢,所以以更多计算来减少读取磁块的次数。数据都存在叶子节点上,节点上存储L条数据。节点下子节点数量为M。通过数据量、单条字节数和数据量大致可以计算出树的高度H。查找数据的时间复杂度为O(H),不大于O(logm n)。
B+树在B树的基础上增加了叶子节点的链表指针,所以可以更快的支持区间查询。【这是大于小于查询可以命中索引的原理】
红黑树:是AVL树的一个变种。牺牲了完全平衡来增加插入效率(减少旋转)。
【遗留课题:完全把红黑树读懂,并以java代码的方式实现】
标签:复杂度,链表,算法,查找,浅读,数据结构,节点 来源: https://www.cnblogs.com/baimingqian/p/10810141.html