
数据结构与算法
文章平均质量分 86
HenryZheng1999
这个作者很懒,什么都没留下…
展开
-
用JS设计布隆过滤器、LRU缓存
收集一些学习布隆过滤器和LUR缓存的时候看到的文章,还有如何用JS设计数据结构的代码布隆过滤器详解布隆过滤器实现:https://www.jianshu.com/p/f75b6bcb4e57/** * BoolmFilter * maxKeys:最大数量 * errorRate:错误率 * */function BoolmFilter (maxKeys, errorRate) ...原创 2020-02-26 18:19:38 · 680 阅读 · 0 评论 -
数据结构(五):散列函数
假如说我们要寻找一个人,我们如果把每一个地点都找遍,那样是没有效率的。我们可以想一想这个人通常会去什么地方,然后直接去那个地方找。这就是散列技术。存储位置=f(关键字)我们把以上对应关系f称为散列函数,又称为哈希(Hash)函数,采用散列技术将记录存储在一块连续的存储空间中,这块存储空间称为散列表(哈希表)。散列冲突:对于两个关键字key1 != key2,却有f(key1)=f(...原创 2018-12-24 16:19:22 · 1486 阅读 · 0 评论 -
数据结构(四):图基础
图此篇文章介绍一些图的基础知识图(graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。基本概念图的一些基础概念,可以回顾一下离散数学:顶点、边、弧、无向边、有向边、无向图、有向图、子图、连通图、度等等下面对这些概念进行简单介绍:图按照有无方向分为无向图和有向图。无向图由顶点和边构成,有...原创 2018-12-23 20:44:03 · 351 阅读 · 0 评论 -
C++ STL基础
标准模板库(Standard Template Library),是一个C++软件库,大量影响了C++标准程序库但并非是其的一部分。这个库包括3种类型的通用项:容器、迭代器和算法。有了STL,程序员就不必编写自己的类和函数,能够利用预先打包好的通用工具来解决先用的问题。下面简单介绍几种最常用的STL工具。参考文献:C++ STL快速入门string头文件#include <s...原创 2018-12-23 10:08:39 · 1301 阅读 · 0 评论 -
数据结构(三):排序算法(下)
插入排序直接插入排序直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。插入排序算法其实很好理解,我们在玩扑克牌的时候,通常喜欢左手拿着排好序的牌,右手拿一张牌然后在左手找位置插入,基本上就是这个思想。我们整理牌的方法,其实就是直接插入排序。对于插入排序,我们可以有两种构造设定哨兵位...原创 2018-12-22 13:56:45 · 166 阅读 · 0 评论 -
数据结构(二):算法复杂度
算法时间复杂度函数渐近增长算法中执行次数最多的那条语句就是基本语句,测定运行时间就是计算基本语句的执行次数可以忽略加法常数与最高此项相乘的常数并不重要最高次项的指数越大,增长越快判断一个算法执行效率时,函数中的常数和其他次要项常常可以忽略,更应该关注主项(最高阶项)的阶数某个算法,随着n增大,它会越来越优于另一算法,或者越来越差与另一算法。大O表示法我们一般使用O(f(n...原创 2018-12-11 10:31:02 · 327 阅读 · 0 评论 -
数据结构(六):霍夫曼编码
在介绍霍夫曼编码之前,我们先看看什么是霍夫曼树霍夫曼树美国数学家Huffman在1952年发明了霍夫曼编码,为了纪念他的成就,就把他在编码中用到的特殊二叉树称为霍夫曼树(哈夫曼树)。我们先来看看哈夫曼树的定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(WPL)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。可以看到,哈夫曼树...原创 2018-12-27 17:37:26 · 1416 阅读 · 0 评论 -
数据结构(一):基本概念和初识算法
数据:所有能被输入到计算机中,且能被计算机处理的符号的集合。是计算机操作的对象的总称。数据元素:数据(集合)中的一个“个体”,数据及结构中讨论的基本单位数据项:数据的不可分割的最小单位。一个数据元素可由若干个数据项组成。数据类型:在一种程序设计语言中,变量所具有的数据种类。整型、浮点型、字符型等等逻辑结构:数据之间的相互关系。集合 结构中的数据元素除了同属于一种类型外,别无其它...原创 2018-12-10 22:07:25 · 292 阅读 · 0 评论 -
数据结构(三):排序算法(上)
排序稳定性和分类稳定性:如果在元素序列中有两个元素R[i]和R[j],他们的排序码K[i]==K[j],且在排序之前,R[i]在R[j]前面。若在排序后,R[i]仍然在R[j]前面,则称这个算法是稳定的。否则,这个算法是不稳定的。怎么理解稳定性?稳定性是指相同元素在排序后相对位置保持不变。举个例子,如果A和B的值相同,排序前B是在A的后面,那么按值排序后B仍然在A的后面,这就叫稳定。分...原创 2018-12-19 22:42:22 · 224 阅读 · 0 评论