随笔分类 - 数据结构与算法
摘要:简介 单调栈即为有序栈,分为单调递增和单调递减。 最大好处是时间复杂度是线性的,每个元素遍历一次 实现伪代码 stack<int> st; for (遍历这个数组) { if (栈空 || 栈顶元素大于等于当前比较元素) { 入栈; } else { while (栈不为空 && 栈顶元素小于当前元
阅读全文
摘要:B-Tree 为磁盘等外存储设备设计的一种平衡查找树 原理 磁盘预读 依据局部性定理,由于磁盘顺序读取的效率很高,对于具有局部性的程序来说,预读可以提高I/O效率。 预读的长度一般为页(page)的整倍数。 在查询数据时如果一个页中的每条数据都能有助于定位数据记录的位置,这将会减少磁盘I/O次数,提
阅读全文
摘要:快速排序 是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 基本思想: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.
阅读全文
摘要:一个二叉树的遍历序列不能决定一棵二叉树,但某些不同的遍历序列组合可以唯一确定一棵二叉树。 给定一棵二叉树的前序遍历序列和中序遍历序列可以唯一确定一棵二叉树的结构,给定一棵二叉树的后序遍历序列和中序遍历序列也可以唯一确定一棵二叉树的结构。 注意:这还有一个条件:二叉树的任意两个结点的值都不相同。 一.
阅读全文
摘要:二叉树的前、中、后序遍历是二叉树结构的一个基础问题。遍历实现方法大体分为两种,递归与迭代。 首先说明前中后三种遍历的区别: 前序遍历:先访问根结点,再前序遍历根结点左子树,再前序遍历右子树。 中序遍历:先中序遍历访问根结点的左子树,再访问根结点,最后访问根结点的右子树。 后序遍历:先后序遍历访问根结
阅读全文
摘要:DFS基本思想:从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念即是深度优先的概念。在树中则是往一个方向走到底,不能到达目标解,则返回上一个节点,往另一个节点走到底。 缺点:难以寻找最优解,仅仅只能寻找有解。优点
阅读全文