
数据结构与算法
文章平均质量分 85
她说:男人能力很重要~!
Payshent
相互交流,共同进步
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STL中vector的实现及面试问题
一、前言: 在学习c++的时候我们会接触两个库,一个是boost库另外一个就是STL库。关于STL库候捷先生的《STL源码剖析》中已经写的很详细了,今天我就关于STL中的vector实现及面试中的一些与之相关的问题做一个讲解。 在面试C++的时候关于vector是作为基础知识经常被问到的,如果面试官问你vector的实现原理,你会怎么回答呢? 二、vector的实现原理及实现机制 关于v原创 2017-06-28 11:38:34 · 5260 阅读 · 1 评论 -
BitMap--位图
有时我们会遇到这样的一道面试题,有40亿个无符号的整型数,这些数是没有经过排序的,现在要求查找一个数是否在这些数中存在。遇到这样的问题我们该如何来解决呢?或许,有人会说,我们把这些数进行一次排序,然后进行二分查找就可以判断这个数有没有存在这些数中。这种方法如果数据比较小的话可以实现,但是对于40亿个无符号整数共有160亿个byte,大概需要16G才能存的下,又要如何把这40亿个数存放在内存中呢?这原创 2017-02-21 21:10:10 · 617 阅读 · 0 评论 -
布隆过滤器
一、布隆过滤器的引入 我们在大量数据中进行查找一个数据,最为常见的方法是采用位图来进行实现的,但是要在大量的字符串中进行查找的时候我们还能使用位图来实现吗?答案明显就是不可以的。在日常的生活中,我们判断元素是否是在集合中存在的;检查一个单词是否拼写正确的时候;我们可以把集合中元素存在计算机中去,但遇到一个新的元素的时候我们和集合中元素来进行比较,在计算机中集合是用哈希表来进行存储的原创 2017-02-22 18:26:32 · 586 阅读 · 0 评论 -
解决大数据方面的问题
1、给超过100G大小的log file,log中存着ip地址,设计算法找到出现次数最多的ip地址?2、与上题条件相同,如何找到top k的ip?如何直接用linux命令实现?3、给定100亿个整数,设计算法找到只出现一次的整数4、给两个文件,分别有100亿个整数,我们只有1G内存,如何找到这两个文件交集5、一个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有原创 2017-02-22 21:16:55 · 1477 阅读 · 0 评论 -
快速排序
一、快速排序的思想 快速排序是生活中比较常用的一种排序算法,它的特点就像名字一样速度快、效率高。 快速排序采用的思想是分治思想,先简单的介绍一下分治的思想。分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可以得到原问题的解。下面这张图会说明分治算法是如何进行的:将cn分成了两个cn/原创 2017-03-08 19:05:33 · 19424 阅读 · 2 评论 -
栈、队列的实现及对栈中时间复杂度的优化
一、栈及其队列的介绍及其实现 栈:栈又称为堆栈,是一种数据结构,是一种受限制的线性表只允许在一端进行插入和删除操作。人们把此端称为栈顶,栈顶的第一个元素被称为栈顶元素,相对地,把另一端称为栈底。向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其下面的相邻元素成为新的栈顶元原创 2017-03-09 20:00:10 · 5267 阅读 · 0 评论 -
判断元素入栈出栈的合法性
给出的入栈序列为(1,2,3,4,5),出栈序列为(4,5,3,2,1)则为合法;出栈序列为(4,5,3,1,2)则为不合法。解题思路:1)我们可以用数组来进行存储入栈和出栈的序列,一个数组村的是入栈的序列另一个数组村的是出栈的序列。2)用一个辅助栈,将入栈序列的第一个元素压栈,看是否和出栈序列的第一个元素相等。3)如果相等则将辅助栈中的元素弹出去,继续比较入栈序列的下一个元素和出原创 2017-04-10 17:00:52 · 1028 阅读 · 0 评论 -
B-树和B+树的应用(数据搜索和数据库索引)
B-树1 .B-树定义B-树是一种平衡的多路查找树,它在文件系统中很有用。定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树;⑵若根结点不是叶子结点,则至少有两棵子树;⑶除根结点之外的所有非终端结点至少有[m/2] 棵子树;⑷所有的非终端结点中包含以下信息数据: (n,A0,K1,A1,K2,…,Kn,An)其中:Ki(i=1,转载 2017-05-16 18:39:46 · 1114 阅读 · 0 评论 -
map和set
关于容器我们知道的在STL中有关联容器和顺序容器,那么所谓的关联容器是什么?所谓的顺序容器又是什么呢?在STL中的哪些属于关联容器,哪些属于顺序容器呢?下面来做一个简单的介绍:关联容器中的元素是按照关键字来保存和访问的,C++中的关联容器重要就是map和set。而顺序容器是按照元素在容器中的位置来进行保存和访问的,在C++中的顺序容器是Vector、List、Deque。今天我就关联容器来给大家做原创 2017-02-15 21:01:37 · 7624 阅读 · 0 评论