摘要:
标签: 编程基础 算法 排序 java 编程中经常遇到的基础算法中不外乎是顺序查找,二分查找,哈希表查找,二叉排序树查找几种。下面详细总结一下这几种排序。 1. 顺序查找 顺序查找是最简单的查找算法。思想是从第一个元素开始,一个一个往下比较,找到与键值匹配的元素即可返回。可以实施在链表或者数组上。在 阅读全文
摘要:
标签:编程基础 算法 树 Java 1. 先序遍历二叉树 递归解法。 思路很简单,先访问当前节点,然后递归访问当前节点的左右子树。 非递归解法。思路是利用 栈结构 模拟递归调用时的现场还原,步骤如下: (1)访问当前节点(do something),把当前节点压栈,并循环进入左子树; (2)当左子树 阅读全文
摘要:
动态规格经典问题现在我有一只背包和N个物品,如果物品很多,不能全部塞进背包里。相信很多人的选择是,把最有价值的物品尽可能多地往背包里塞。问题描述:给定N个物品和一个背包。物品i的重量是Wi,其价值为vi,背包的容量为C。问应该如何选择装入背包的物品,使得装入背包的物品的总价值为最大?在选择物品的时候... 阅读全文
摘要:
问题描述:Given 2 sequences, X = x1,...,xm and Y = y1,...,yn, find a common subsequence whose length is maximum. Subsequence need not be consecutive, but m... 阅读全文
摘要:
不同于对字符使用定长编码,huffman编码法使用“频繁出现的字符占用更短的位数,不频繁出现的字符占用更长的位数”的方法,来实现编码压缩。 首先对于text中的所有字符,我们统计每个字符出现的频率,例如: huffman算法描述: 第一步,初始化n个单节点的树(森林),为它们标上字... 阅读全文
摘要:
在算法设计的时空权衡设计技术中,对问题的部分或者全部输入做预处理,对获得的额外信息进行存储,以加速后面问题的求解的思想,我们称作输入增强。 其中字符串匹配算法Horspool算法和Boyer-Moore算法就是输入增强的例子。 首先了解一下字符串匹配的概念。我们把在一个较长的n个字符的... 阅读全文
摘要:
一、算法要求:构建2-3-4树从一个数据文件中依次读入关键字序列构建树,测试建树时间;测试遍历产生顺序输出序列需要的时间;测试构建完成树后删除指定关键字集合的时间。二、算法思路: 2-3-4树是一种阶为4的B树。它是一种自平衡的数据结构,可以在O(logN)的时间内查找、插入和删除,这里的n是树中... 阅读全文
摘要:
算法思路:数据预处理。先把点集中的所有点,按照Y坐标大小从左往右排序,得到关于Y轴的有序点集合。具体使用STL的qsort方法,自定义比较函数。使用分治的思想, 把点集分开出来求解。先选取点集中Y坐标最中间的点,该点所在垂直于Y轴的平面把点集划分成两个子点集leftSubSet和rightSubSe... 阅读全文