随笔分类 - 算法/数据结构
整理自己get的算法,加以简要的说明
摘要:一、基本介绍 1. 推荐系统任务 推荐系统的任务就是联系用户和信息一方面帮助用户发现对自己有价值的信息,而另一方面让信息能够展现在对它感兴趣的用户面前从而实现信息消费者和信息生产者的双赢。 2. 与搜索引擎比较 相同点:帮助用户快速发现有用信息的工具 不同点:和搜索引擎不同的是推荐系统不需要用户提供
阅读全文
摘要:Collection的其它两大分支:List和Set在前面已近分析过,这篇来分析一下Queue的底层实现。 前三篇关于Java容器类的文章: java容器类1:Collection,List,ArrayList,LinkedList深入解读 java容器类2:Map及HashMap深入解读 java
阅读全文
摘要:Java的编程过程中经常会和Map打交道,现在我们来一起了解一下Map的底层实现,其中的思想结构对我们平时接口设计和编程也有一定借鉴作用。(以下接口分析都是以jdk1.8源码为参考依据) 1. Map An object that maps keys to values. A map cannot
阅读全文
摘要:互质定义: 公约数只有1的两个数叫做互质数。 (1和任意数互质,两个相等的非1的数,不互质) http://res.tongyi.com/resources/old_article/student/1380.html 欧拉函数: 欧拉函数是小于等于n的正整数中与n互质的数的数目(φ(1)=1)。、
阅读全文
摘要:对于一棵二叉树一般有三种遍历方式,先序遍历(preOrder)、中序遍历(inOrder)、后序遍历(postOrder)。 同时这里还介绍了二叉树的 层次遍历(levelOrder) 每种遍历都有递归的实现和非递归的实现。 1、preOrder 对每个节点进行遍历,并将right节点push到一个
阅读全文
摘要:由于优先级队列的内部数据结构为 堆,所以这里先介绍堆的一些操作。 堆的一些函数操作在algorithm头文件中 默认情况下是建立最大堆,即首元素为两个地址间的最大值。默认为less<int>,可以改为greater<int>即为建立最小堆 将front(即第一个最大元素)移动到end的前部,同时将剩
阅读全文
摘要:0-1背包问题描述 有一个窃贼在偷窃一家商店时发现有n件物品,第i件物品价值为vi元,重量为wi,假设vi和wi都为整数。他希望带走的东西越值钱越好,但他的背包中之多只能装下W磅的东西,W为一整数。他应该带走哪几样东西? 0-1背包问题中:每件物品或被带走,或被留下,(需要做出0-1选择)。小偷不能
阅读全文
摘要:前言:动态规划的概念 动态规划(dynamic programming)是通过组合子问题的解而解决整个问题的。分治算法是指将问题划分为一些独立的子问题,递归的求解各个问题,然后合并子问题的解而得到原问题的解。例如归并排序,快速排序都是采用分治算法思想。本书在第二章介绍归并排序时,详细介绍了分治算法的
阅读全文
摘要:本章通过扩张红黑树构造出两种数据结构:动态顺序统计和区间树。 1、动态顺序统计:查找倒数第i小的数据 复杂度为 lg(n) 为什么是扩张红黑树而不是搜索二叉树或者二叉树? 相对于搜索二叉树,红黑树的平衡性更好,高度在lg(n) 。这样查找时的复杂度就是 lg(n)而不是n。在第9章顺序统计量的时候列
阅读全文
摘要:红黑树 红黑树是一种二叉查找树,但在每个结点上增加了一个存储位表示结点的颜色,可以是RED或者BLACK。通过对任何一条从根到叶子的路径上各个着色方式的限制, 红黑树确保没有一条路径会比其他路径长出两倍,因而是接近平衡的。当二叉查找树的高度较低时,这些操作执行的比较快,但是当树的高度较高时,这些操作
阅读全文
摘要:一、什么是二叉搜索树 二叉查找树是按照二叉树结构来组织的,因此可以用二叉链表结构表示。二叉查找树中的关键字的存储方式满足的特征是:设x为二叉查找树中的一个结点。如果y是x的左子树中的一个结点,则key[y]≤key[x]。如果y是x的右子树中的一个结点,则key[x]≤key[y]。根据二叉查找树的
阅读全文
摘要:一、栈,队列,链表 栈是后进先出,而队列则是FIFO 栈的基本操作: queue的基本操作: list的基本操作: set,unordered_set,multi_set的基本操作 map的基本操作 二、散列表 散列表对应着STL中的map,map中一个key只能映射一个value。 部分转载自:h
阅读全文
摘要:一、堆排序 : 原址排序 复杂度: nlg n 最大堆: A[parent(i)] > = A[i] 最小堆: A[parent(i)] < = A[i] 除了最底层外,其它层都是满状态。 判断节点是否为叶节点: [n/2]+1,.....n 均为叶节点 二、快速排序 原址 最坏时间复杂度: n^2
阅读全文
摘要:第二章: 1/ 插入排序:原址,复杂度为n^2 最佳运行时间为线性,最坏情况为n^2 2/ 归并排序(merge sort):需要另外开辟n个存储空间 复杂度: nlgn merge : 假设merge的两个数串都是已经排序好的数 3、 最大子数组问题: 求一个数组中后一个元素与它之前的任意一个元素
阅读全文
摘要:算法 map 哈希表
阅读全文

浙公网安备 33010602011771号