数据结构解决的是数据在内存当中如何存储;算法是解决问题的方法。
光盘上面有一圈圈的磁道,磁道上有磁颗粒,在这上有一层氧化薄膜保护。
磁盘:磁颗粒存储;内存:电容存储。内存临时存储链式存储,磁盘永久存储,顺序存储。磁盘本质上是存储文件的,不能存放数组。
磁盘永久存储为什么还要内存?因为磁盘读取数据慢。
算法好坏的评价标准:时间复杂度(更重要)和空间复杂度。
时间复杂度:1.确定问题的规模n;
2.循环减半log n;(需要有序)
3.k层n的循环,n^k;
4.复杂情况根据算法执行情况确定。
O(1)<O(log n)<O(n)<(nlog n),链表只有O(n)的时间复杂度选项。
排序二叉树:一个节点可以分为左右两个子节点,左边节点的值一定比当前结点的值小,右边结点的值一定比当前结点的值大。这时循环复杂度是O(log n)。
左侧是理想的二叉树,时间复杂度是O(log n),而实际上通常是右侧情况,介于O(log n)和O(n)之间。
平衡二叉树:在排序二叉树的基础上,要求一个节点左右两边的树的高度差不能超过1。严格将时间复杂度控制为O(log n),确定是每次进行平衡调整都需要消耗系统资源。
2-3-4树(B树的一种,4阶B树):每一个叶子节点都有相同的深度。
红黑树:1.每个节点不是红色就是黑色;
2.根节点是黑色的;
3.每一个叶子节点是黑色的(每一个带数值的节点都不算叶子节点,叶子节点是null);
4.如果一个节点是红色的,那么它的子节点必须是黑色的;
5.一个节点到该节点上的所有子孙节点的路径上都拥有相同的深度的黑色节点数目。
在红黑树中没有一条路径比其他路径长2倍多。