
数据结构和算法
文章平均质量分 59
飞飞好奇
Fly For Fun
深入分布式、中间件、系统架构技术研究;
专注互联网金融、互联网文化娱乐行业。
展开
-
常见的数据结构和算法
数据结构:线性:数组 (Array)、栈 (Stack)、队列 (Queue)、链表 (Linked List)树:堆(heap)、二叉搜索树(binary search tree)、Merkle Tree(Hash Tree)、B-/B+ Tree、红黑树 二叉树、哈夫曼树图 (Graph)散列表 (Hash) 算法:排序:冒泡、快速、直接选原创 2016-03-30 16:16:40 · 675 阅读 · 2 评论 -
Bloom Filter算法和实现
Bloom Filter算法和实现基本概念:Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用原创 2016-04-06 12:10:13 · 2113 阅读 · 0 评论 -
基于Redis的BloomFilter实战
离线数据处理与实时数据处理有很大的不同,其中一个例子就是去重。在聚数据中,访问UV和购买UV都需要实时的去重。离线处理的时候,我们可以通过count(groupby)或者count(distinct)等方式比较容易的计算出UV,而且不用太担心性能,大不了就是多一点map或者执行时间久一点。那么在实时计算的时候,我们有什么好的办法来做这个事情呢?在聚数据中有两种场景:1,数据的准确性要求转载 2016-04-06 14:33:50 · 14377 阅读 · 0 评论 -
算法题1:字符序列交换(阿里巴巴笔试题)
题目:若初始序列为gbfcdae,那么至少需要多少次两两交换,才能使该序列变为abcdefg ?任给一个自由a--g这7个字母组成的排列,最坏的情况下需要至少多少次两两交换,才能使序列变为abcdefg ?原创 2017-07-22 22:32:37 · 1156 阅读 · 0 评论 -
算法2:树的带权路径长度(创新工场)
题目:由权值为9,2,7,5的四个叶子节点构造一棵哈夫曼树,该树的带权路径长度为__?原创 2017-07-24 15:21:03 · 952 阅读 · 1 评论 -
算法题3:二叉树度为0的结点个数(创新工场笔试题)
题目:若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是:()原创 2017-07-24 17:17:06 · 3278 阅读 · 1 评论 -
快速排序
快速排序快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。package com.jrj.sort;public class QuickSort { public void...转载 2018-06-13 18:36:41 · 189 阅读 · 0 评论 -
跳跃表学习
假如我们要用某种数据结构来维护一组有序的int型数据的集合,并且希望这个数据结构在插入、删除、查找等操作上能够尽可能着快速,那么,你会用什么样的数据结构呢?数组一种很简单的方法应该就是采用数组了,在查找方面,用数组存储的话,采用二分法可以在 O(logn) 的时间里找到指定的元素,不过数组在插入、删除这些操作中比较不友好,找到目标位置所需时间为 O(logn) ,进行插入和删除这个动作所需...转载 2019-02-15 11:19:11 · 206 阅读 · 0 评论