内存管理之内存池概述

转自这里 在我们编写代码的过程中,不可避免的要和内存打交道,在申请释放不太频繁的情况下,通常让系统进行内存管理即可。但是,直接使用系统调用malloc/free、new/delete进行内存分配和释放,存在一定的弊端: 1、调用malloc/new,系统根据“最先匹配”、“...

2016-08-19 14:28:46

阅读数:183

评论数:0

【数据结构】平衡搜索树之---B树的算法实现

#include using namespace std; #ifndef __BTREE_H__ #define __BTREE_H__ template//设为三阶B树(每个数组三个关键字) struct BNode { BNode* _parent; size_t _size;//元...

2016-07-01 20:03:08

阅读数:408

评论数:0

【数据结构】搜索二叉树的(递归与非递归)实现,包括:增Insert,删Remove,查Find

搜索二叉树,是二叉树一种特殊的结构。 特点: (1)每个节点都有一个关键码,并且关键码不重复。 (2)左子树上的每个节点的关键码都小于根节点的关键码。 (3)右子树上的每个节点的关键码都大于根节点的关键码。 (4)左右子树都是搜索二叉树。 下面,为方便大家理解,我举例画一个搜索二叉树...

2016-06-03 16:46:06

阅读数:2304

评论数:0

【数据结构】非比较排序的算法实现(包括计数排序、计数排序)

对于比较排序,大家如果感兴趣,可以查看我的博客:http://10740184.blog.51cto.com/10730184/1774508计数排序思路:我们假设升序排序排序序列为2000,2001,3000,4000遍历序列,取出最小值min,最大值max,开辟一个空间为max—min的空间大...

2016-05-30 17:19:34

阅读数:170

评论数:0

【数据结构】大量数据(20万)的快速排序的递归与非递归算法、三数取中思想

快速排序的挖坑法与prev、cur法,我们在上一篇博客的第6个排序中讲的非常详细,http://10740184.blog.51cto.com/10730184/1774508【数据结构】常用排序算法(包括:选择排序,堆排序,冒泡排序,选择排序,快速排序,归并排序)    有兴趣的话,相信聪明的...

2016-05-30 17:19:28

阅读数:1353

评论数:0

【数据结构】常用比较排序算法(包括:选择排序,堆排序,冒泡排序,选择排序,快速排序,归并排序)

对于非比较排序算法,如计数排序、基数排序,大家如果感兴趣,可以查看博客http://10740184.blog.51cto.com/10730184/1782077。本文,我将介绍比较排序算法。直接插入排序:在序列中,假设升序排序1)从0处开始。1)若走到begin =3处,将begin处元素保存...

2016-05-30 17:19:22

阅读数:499

评论数:0

【数据结构】两个队列实现一个栈

用两个栈实现一个队列,这个问题与“两个队列实现一个栈”原理非常的相似。只要你明白了”两个队列实现一个栈“的原理,相信聪明的你,就会明白这个问题只是它的变种,所有的异或就会迎刃而解的。这里大家可以参考我的博客http://10740184.blog.51cto.com/10730184/176300...

2016-05-30 17:19:19

阅读数:238

评论数:0

【数据结构】位图BitMap、布隆过滤器的算法实现

我们先给出之前我看过的腾讯公司的一道笔试题,引出位图BitMap。给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。这个问题怎么解决呢?1)将40亿数据保存起来(保存在数组、链表、树中),再和该数判断是否相等。那我们思考一下需要多少内存:650) t...

2016-05-30 17:19:16

阅读数:1063

评论数:0

【数据结构】处理哈希冲突的开链法(哈希桶)算法实现

实现哈希表时,我们常见的方法是线性探测、二次探测,这两个算法也很简单。若有兴趣,可以查看我的博客 http://10740184.blog.51cto.com/10730184/1771160。但是,这两个算法有一个共同点就是:空间利用率低。为什么这么说呢?线性探测、二次探测的高效性很大程度上要取...

2016-05-30 17:19:08

阅读数:259

评论数:0

【数据结构】哈希表的线性探测算法

构造哈希表常用的方法是:除留余数法--取关键值被某个不大于散列表长m的数p除后的所得的余数为散列地址。HashKey= Key % P。直接定址法--取关键字的某个线性函数为散列地址HashKey= Key 或 HashKey= A*Key + BA、B为常数。我在这里主要使用一下除留余数法Has...

2016-05-30 17:19:04

阅读数:311

评论数:0

【数据结构】将一组数据升序排序(利用堆排序)

堆排序相对冒泡排序、选择排序效率很高,不再是O(n^2).假若将一个序列升序排序好,那么我们来考虑最大堆还是最小堆来排序。假若是最小堆的话,堆的顶端必定是堆中的最小值,这样貌似可以。但是,如果是它的(一边或)子树左子树的节点数据值大于(一边或)右子树的节点数据值,直接打印肯定是错误的,而且对于此时...

2016-05-30 17:18:59

阅读数:366

评论数:0

【数据结构】找出N个数据中最大的前k个数据(利用堆排序)

我们举例,假若从10000万个数里选出前100个最大的数据。首先我们先分析:既然要选出前100个最大的数据,我们就建立一个大小为100的堆(建堆时就按找最大堆的规则建立,即每一个根节点都大于它的子女节点),然后再将后面的剩余数据若符合要求就插入堆中,不符合就直接丢弃该数据。那我们现在考虑:确定是该...

2016-05-30 17:18:55

阅读数:4935

评论数:1

【数据结构】优先级队列的实现(适配器模式)

代码按照适配器模式实现,若理解了堆的内部怎么实现的,那优先级的队列实现则是非常简单的了,堆的设计大家不明白的话,可以查看我的博客http://10740184.blog.51cto.com/10730184/1767076。建立PriorityQueue.hpp:#define _CRT_SECU...

2016-05-30 17:18:52

阅读数:204

评论数:0

【数据结构】堆的实现(包括:默认成员函数,插元素push,删元素pop,访问根节点top,判空,大小)

在数据结构里,堆是一类很重要的结构。堆结构是一组数组对象,我们可以把它当作是一颗完全二叉树。最大堆:堆里每一个父亲节点大于它的子女节点。最小堆:堆里每一个父亲节点小于它的子女节点。如图就是一个最大堆:650) this.width=650;" src="http://s1.51...

2016-05-30 17:18:49

阅读数:301

评论数:0

【数据结构】二叉树(前、中、后)序遍历的递归与非递归算法

对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对 于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一 点。二叉...

2016-05-30 17:18:46

阅读数:190

评论数:0

【数据结构】二叉树的实现(如:默认成员函数、(叶子)节点数、深度、四种遍历)

二叉树:树的每个节点最多有两个子节点。我们看下它的结构,有二叉链表结构与三叉链表结构,具体结果如我摘自《C++Primer》中的图。650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/7F/32/wKiom1cWG...

2016-05-30 17:18:43

阅读数:388

评论数:0

【数据结构】广义表的默认成员函数、深度、大小、打印

广义表的定义:广义表是非线性的结构,是n个元素的有限序列。650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/7F/19/wKiom1cTUC7RB4CcAAAw4q17T88241.png" title...

2016-05-30 17:18:37

阅读数:268

评论数:0

【数据结构】稀疏结构及稀疏矩阵的压缩存储,矩阵的(快速)转置

在矩阵中,有一类很重要的矩阵,就是-----稀疏矩阵。所谓的稀疏矩阵呢,就是指的是,在矩阵中,有效的数据个数远远小于无效的数据个数(并且这些数据排列顺序没有规律)。我们下面先举个稀疏矩阵的例子:650) this.width=650;" src="http://s3.51cto...

2016-05-30 17:18:34

阅读数:304

评论数:0

【数据结构】对称矩阵及对称矩阵的压缩存储

对称矩阵:设一个N*N的方阵A,A中任意元素Aij,当且仅当Aij == Aji(0 如下面矩阵:650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="back...

2016-05-30 17:18:31

阅读数:259

评论数:0

【数据结构】(面试题)使用两个栈实现一个队列(详细介绍)

使用两个栈实现一个队列思路一:我们设定s1是入栈的,s2是出栈的。入队列,直接压到s1即可出队列,先把s1中的元素倒入到s2中,弹出s2中的栈顶元素;再把s2的剩余元素全部倒回s1中。650) this.width=650;" src="http://s5.51cto.com/...

2016-05-30 17:18:28

阅读数:6796

评论数:1

提示
确定要删除当前文章?
取消 删除
关闭
关闭