随笔分类 - 算法
摘要:最近在做背包问题,今天写点东西总结一下。 背包问题,常见的有三种类型:基本的0-1背包、完全背包和多重背包、二维背包 首先是基本的0-1背包问题。因为这里的物品一般指花瓶、玉器什么的,要么拿、要么不拿,只有0和1两种状态,所以也叫0-1背包。0-1背包虽然简单,却很重要,是“万法之源”,是其他几类问
阅读全文
摘要:一、冒泡排序 思想:重复走访过要排序的序列,一次比较两个元素,如果他们的顺序错误就将他们进行交换,一次冒上来的是最小的,其次是第二小。 时间复杂度:O(n^2) 空间复杂度:O(1) 稳定性:稳定 /** * 冒泡排序 * @param disOrderArray * @return */ publ
阅读全文
摘要:KMP算法的时间复杂度是O(m + n),而Boyer-Moore算法的时间复杂度是O(n/m)。文本查找中“ctrl + f”一般就是采用的BM算法。 Boyer-Moore算法的关键点: 从右遍历,如果有txt里面的i+j元素和pat里面的j元素不一致,调整。根据right[]调整,right[
阅读全文
摘要:B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关
阅读全文
摘要:快速排序: 时间复杂度O(N*logN),最坏情况为O(N^2) 空间复杂度O(1) 但是堆栈深度一般情况为O(logN),最坏情况为O(N) 快速排序实现: partition划分算法: 然后,对整个数组进行递归排序: 算法导论中提到的快速排序的优化版本:就地重排 本文重点:三向切分 快速排序什么
阅读全文

浙公网安备 33010602011771号