数据结构笔记整理

来源:互联网 发布:sql server2008安装包 编辑:程序博客网 时间:2024/06/04 06:23

数据结构:链表,数组,堆栈,队列,二叉树,哈希表,图,几个排序算法

问题1:java中arraylist如何实现:一个可以随机访问,自动增加容量的数组,怎么搞出来的?

问题2:如何用栈实现计算算术表达式。

问题3: 辗转相除法

数据结构除了数组之外都可以认为是抽象数据结构(ADT)

1.数组:

--无序数组:插入快,查找慢,删除慢 

--有序数组:查找比无序快(二分),插入慢,删除慢

(有序无序如果知道下标,那查找快,可以直接通过下标访问)

二分查找:前提是有序数组(可以用递归实现,也可以不用)

大O表示法



2.简单排序(冒泡排序,快速排序,归并排序,堆排序) 时间复杂度 ,空间复杂度,稳定性


--冒泡排序(n-1轮,最大的数据行总是'冒泡到数组的顶端')

--堆排序 

(1)建立堆(大顶):从最后一个非叶节点开始

(2)调整堆


3栈和队列

栈实现队列。

栈实现算数表达式求值。java中栈利用后缀表达式的方式实现。


4链表

5.二叉树

删除节点(两个子节点的情况):用它的中序后继节点代替(例子:霍夫曼树)


6.红黑树

--定义:红黑树是特殊的二叉查找树,任意一个节点包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。此外,每个节点都有存储位表示节点的颜色,颜色是红或者黑。


7.哈希表

--定义:哈希表是一个在时间和空间上做出权衡的经典例子。

1.图

(1) 存储结构。

 --邻接矩阵。

邻接矩阵存储方法采用N*N矩阵(N代表图节点的个数)。

适用情况:矩阵是稠密的矩阵(比如图是完全图时)

--邻接表。

每一个结点后面所接的结点都是它的邻接结点。

适用情况:稀疏矩阵,更节省空间的存储结构。

(2)图的遍历。

---广度优先。类似于一个分层搜索的过程,广度优先遍历使用队列来保持访问过的结点的顺序,按这个顺序来访问这些结点的邻接结点。(横向挖掘)

---深度优先。每次都在访问完当前结点后首先访问当前结点的第一个结点。(纵向挖掘)采用递归实现。





6.nginx负载均衡
7.KMP算法
8.JVM

11设计模式


0 0
原创粉丝点击