随笔分类 - 数据结构与算法
摘要:排序(1) @(数据结构与算法) 基本排序算法的时间复杂度 如何分析排序算法 时间复杂度,空间复杂度,稳定性 冒泡排序 Java 代码如下: 时间复杂度$O(n^2)$,空间复杂度 $O(1)$ 稳定 插入排序 Java 代码 时间复杂度$O(n^2)$,空间复杂度 $O(1)$ 稳定 选择排序 j
阅读全文
摘要:栈 @(数据结构与算法) 从操作特性看,栈是一种「操作受限制」的线性表,只允许在一端插入或删除数据。 从功能上看,数组或者链表确实可以替代栈,但特定的数据结构是对特定场景的抽象,而且,数组或链表暴露了太多的操作接口,操作上的确灵活自由,但使用时就比较不可控,自然也就更容易出错。 栈主要包括两个操作,
阅读全文
摘要:链表(下) @(数据结构与算法) 链表代码书写技巧 理解指针或引用的含义 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针。代码: 指 p 结点的 next 指针存储了 q 结点的内存地址。代码: 指 p 结点的 next 指针存储了 p 结点的下下一个结点的内存地址。 警惕指针丢失和内存
阅读全文
摘要:链表(上) @(数据结构与算法) 链表的经典应用场景: LRU 缓存淘汰算法。 缓存是一种提高数据读取性能的计数,如常见的:CPU 缓存,数据库缓存,浏览器缓存等。 缓存的大小有限,当缓存被用满时,那些数据应该被清理出去,那些数据应该保留,这就需要缓存淘汰策略算法来决定。常见得策略有三种:先进先出策
阅读全文
摘要:数组 @(数据结构与算法) 数组 一种线性表数据结构。它用一组连续的内存管空间,开存储一组具有相同类型的数据。 线性表:数据排成一条线一样的结构。 非线性表: 数据之间不是简单的前后关系。 数组的特性 随机访问 。随机访问的缺点:如果要想在数组中删除、插入一个数据,为了保证连续性,就需要做大量的数据
阅读全文
摘要:复杂度分析(下) @(数据结构与算法) 复杂度除了大 O 表示法,还有 最好时间复杂度 , 最坏时间复杂度 , 平均时间复杂度 , 均摊时间复杂度 。 c //n 表示数组 array 的长度 int find(int[] array,int n,int x){ int i = 0; int pos
阅读全文
摘要:复杂度分析(上) @(数据结构与算法) 1. 数据结构与算法本质上是解决程序 运行速度快 和 存储空间省 的问题,所以需要通过一个指标,即 时间、空间复杂度 来衡量这个问题 2. 为什么需要复杂度分析 程序测试运行结果会受到测试环境的硬件影响 测试结果受数据规模的影响很大 3. 假设每行代码的运行时
阅读全文

浙公网安备 33010602011771号