
数据结构
文章平均质量分 80
victory_523
爱生活,爱编程!!!
展开
-
vector 和 list
一、vector和list的使用(1)vector基本概念:vector的底层结构和数组类似,拥有一段连续的内存空间,并且起始地址不变。因此可以高效的进行随机随机存取,时间复杂度为o(1);但是因为内存空间是连续的,所以在进行插入和删除操作时,需要移动数据,当数组内存空间不足时,会重新申请一块内存块的拷贝,时间复杂度为o(N).头文件:#include<vector>基本使用:#inc...原创 2017-09-12 21:40:10 · 357 阅读 · 0 评论 -
map和set的使用
Set是一种关联容器,它用于存储数据,并且能从一个数据集合中取出数据。它的每个元素的值(key)必须唯一,而且系统会根据该值来自动将数据排序。下面给出库里set的一些使用方法: #include<set>#include<string>void test_set(){ set<int> s; //定义一个set对象 //插入 s.in...原创 2017-11-05 20:04:09 · 294 阅读 · 1 评论 -
快速排序
一、快速排序的思想快速排序是生活中比较常用的一种排序算法,它的特点就像它的名字一样速度快、效率高。快速排序采用的思想是分治思想,先简单介绍一下分治思想。分治思想的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可以得到原问题的解。 既然快速排序用到了分治的思想,那么也就是说快速排序也就和分治算法一样为了进行排序需要先对其...原创 2018-03-24 15:47:04 · 2164 阅读 · 0 评论 -
STL中vector的实现以及面试问题
一、杂谈在学习C++的时候我们会接触两个库,一个是boost库,一个是STL库。关于STL在《STL源码剖析》这本书中侯捷先生讲的很清楚,今天我就关于STL中的vector实现以及面试中的一些相关的问题做一个详细解释。在网上看人家的面试经验的时候,看到C++关于vector是作为基础知识经常被问到的,如果面试官问你vector的底层实现原理,你会怎么回答?二、vector的实现原理以及实现机制关于...原创 2018-03-22 11:22:35 · 3734 阅读 · 0 评论 -
解决大数据相关问题
在学习生活过程中,我们往往会遇到一些大数据方面的问题,那么遇到这些看似比较简单但数据量又非常庞大的题目时我们又该如何解决问题呢?1.给超过100G大小的log file,log中存放着IP地址,设计算法找到出现次数最多的IP地址?100G的文件中存放着IP地址,我们如何来找到出现次数最多的IP地址呢?普通的遍历方法肯定是不行的,这时候我们便需要解决大数据问题最常规的方法——文件分割。文件分割确实可...原创 2018-03-26 16:59:29 · 473 阅读 · 0 评论 -
海量数据——TopK问题
TopK问题是一个经典的海量数据处理问题,比如微博热搜每隔10分钟都会更新出排行前10的热门搜索信息,再或者通过大数据找出一个地区最爱吃的水果等,都可以使用TopK问题来解决,其核心思想就是最小堆的引入。TopK问题分析在海量数据中找出出现频率最高的前K个数,或者从海量数据中找出最大的前K个数,这类问题通常被称为TopK问题。下面我们通过一个简单的例子来说明:假如面试官给你100W个数据,请找出其...原创 2018-03-27 15:54:31 · 1946 阅读 · 0 评论 -
排序算法(七大经典排序算法)
排序算法在我们的现实生活中应用非常广泛,我们应该很好的掌握。下面我们将对7种常见算法逐个进行介绍:常见的排序算法:1.插入排序(1)直接插入排序思路分析:思路分析:①在长度为N的数组,将数组中第i [1~(N-1) ] 个元素,插入到数组 [0~i] 适当的位置上。②在排序的过程中当前元素之前的数组元素已经是有序的了。③在插入的过程中,有序的数组元素,需要向右...原创 2018-05-26 17:32:14 · 3766 阅读 · 0 评论 -
二叉树的遍历(前序、中序、后序、层序)
1.二叉树基础(1)定义:有且仅有一个根节点,除根节点以外,每个节点只有一个父节点,最多有两个子节点,子节点有左右之分。(2)存储结构:二叉树的存储结构可以采用顺序存储结构,也可以采用链式存储结构,其中链式存储更加灵活。在链式存储中,二叉树的每个节点采用结构体表示,结构体包含三个域:数据域、左指针域、右指针域。2.二叉树遍历“遍历”是二叉树各种操作的基础,二叉树是一种非线性结构...原创 2018-08-08 15:10:02 · 684 阅读 · 0 评论