
数据结构
zangyuanan320
just do IT!
展开
-
【数据结构】堆的实现以及简单的函数
堆是什么?刚接触到这个概念估计都摸不着头脑,不知道堆是什么样个东西。简单介绍下,堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储有两种情况: (1).最大堆:每个父节点的都大于孩子节点。 (2).最小堆:每个父节点的都小于孩子节点。举个例子可能好理解些,看下面:int a[] = {10,11,13,12,16,18,15,17,14,19};650) this.w原创 2016-05-30 15:04:30 · 388 阅读 · 0 评论 -
AVL树详解与总结
AVL树的插入和删除原创 2016-07-31 13:19:49 · 1912 阅读 · 0 评论 -
【数据结构】红黑树的插入(Insert)
红黑树的情况分析,以及插入写法原创 2016-06-16 11:17:38 · 1389 阅读 · 0 评论 -
【数据结构】二叉搜索树(增、删、查)的递归与非递归实现
本篇博客主要介绍了二叉索索树增、删、查三个功能的d递归与非递归实现原创 2016-06-04 15:48:14 · 353 阅读 · 0 评论 -
【数据结构】常见的排序方法的实现以及性能对比
本文介绍了七种常见排序的写法插入排序,shell排序,选择排序,堆排序,冒泡排序,快速排序和堆排序原创 2016-06-03 10:22:01 · 485 阅读 · 0 评论 -
【数据结构】线索化二叉树中序线索化的递归写法和非递归写法
二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。 为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息。所以引入了线索化二叉树。下面我们讲一下线索化二叉树中序线索化的两种实现方法: (1).递归实现中序线索化原创 2016-05-30 15:04:27 · 1488 阅读 · 0 评论 -
【数据结构】位图BitMap与布隆过滤器BloomFilter
首先先看一下下面这个腾讯的面试题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 【腾讯】思路一: 最容易想到的解法就是遍历所有的40多亿个整数,然后一个一个判断。但是这个需要花费的内存是多大呢? 大家可以去算一下,这里我就直接给出结果为16G,是不是需要的空间很大啊。如果面试官给出限制条件,要你使用的空间少于多少,遍历的方法就行不通啦。思路原创 2016-05-30 15:04:42 · 2460 阅读 · 0 评论 -
【数据结构】【面试题】找N个数据中最大的K个数据
如果不限定条件的话,这个问题还是很好解决的,但是当我们要求时间复杂度为O(N),空间复杂度为O(1)时,问题就没那么好解决了。 简单的思路就是,创建一个大小为K=100的小堆,调整好,然后从K开始拿十万个数据一个一个跟堆头比较,如果比堆头大,就入堆,然后调整成最小堆,一直循环到第N=100000个数据。void AdjustDown(int* _a, size_t size,int i){原创 2016-05-30 15:04:36 · 454 阅读 · 0 评论 -
【数据结构】用模版实现大小堆、实现优先级队列,以及堆排序
一、用模版实现大小堆 如果不用模版的话,写大小堆,就需要分别实现两次,但是应用模版的话问题就简单多了,我们只需要实现两个仿函数,Greater和Less就行了,仿函数就是用类实现一个()的重载就实现了仿函数。这个看下代码就能理解了。再设计参数的时候,需要把模版设计成模版的模版参数,因为要实现大小堆嘛!当我们实现好一个大堆或者小队的逻辑后只需要用模版接收的Greater或Less类定义一个变量原创 2016-05-30 15:04:33 · 344 阅读 · 0 评论 -
B-树/B+树/B*树详解(查找+插入)
B-树/B+树/B*树详解原创 2016-08-01 10:57:15 · 5326 阅读 · 0 评论