数据结构
anssummer
只求每天进步一点点.
展开
-
数据压缩技术
行程编码(run-length encoding)行程编码应该算是简单的一种压缩技术了。这种的算法非常明了,比如我有一个字符串“AAAABBBBCCCCDDDD”,如果以最简单的ASCII编码形式保存的话,就需要16个字节,那么如果使用了行程编码呢,编码后将会像是这样,“#A4#B4#C4#D4”,就是12个字节,如果重复char越多效果就越明显了。注意这里我们使用的是ASCII编码的演示,所以“#A4”是三个字节,“#A255”同样是三个字节。压缩后的“#A4#B4#C4#D4”是什么意思呢,在这里“原创 2021-08-28 23:54:02 · 569 阅读 · 0 评论 -
布隆过滤器
直观的说,bloom算法类似一个hash set,用来判断某个元素(key)是否在某个集合中。和一般的hash set不同的是,这个算法无需存储key的值,对于每个key,只需要k个比特位,每个存储一个标志,用来判断key是否在集合中。算法:1. 首先需要k个hash函数,每个函数可以把key散列成为1个整数2. 初始化时,需要一个长度为n比特的数组,每个比特位初始化为03. 某个key加入集合时,用k个hash函数计算出k个散列值,并把数组中对应的比特位置为14. 判断某个key是否在集合时原创 2020-09-25 13:37:48 · 259 阅读 · 0 评论 -
B-Tree和B+Tree的异同
B树和B+树其实都是平衡搜索树。这里要脑补一下平衡搜索树的概念:这个词划分一下就是平衡+搜索+树。也就是说,他首先是一棵树,其次能搜索,再次他是平衡的。大家耳熟能详的一个概念:二叉平衡搜索树。(详细的大家可以在百度上搜一下定义,或者拿起那本厚实的「算法导论」看看)。#异#但是B树和B+树却有不同的地方。就是这些不同的地方,决定了他们的用处可能不一样。我画了一个不太漂亮的B树的图。我...原创 2020-01-06 15:58:53 · 243 阅读 · 0 评论 -
堆和栈的区别
1.堆和栈的区别 一、堆栈空间分配区别: 1、栈(操作系统):由操作系统自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈; 2、堆(操作系统):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。 二、堆栈缓存方式区别: 1、栈使用的是一级缓存,他们通常都是被调用时处于存储空间中,调用完毕立即释放; ...原创 2019-11-16 21:25:14 · 1696 阅读 · 0 评论 -
C++中如何建立一个顺序表
准备数据[cpp] view plaincopy#define MAXLEN 100 //定义顺序表的最大长度 struct DATA { char key[10]; //结点的关键字 char name[20]; int age; }; struct SLType原创 2013-09-26 19:29:28 · 1243 阅读 · 0 评论 -
解析“extern”
解析“extern”1、 声明外部变量现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。下面举一个简单的例子。创建一个工程,里面含有A.cpp和B.cpp两个简单的C++源文件://A.cppint i; void main(){}原创 2013-09-26 19:51:46 · 630 阅读 · 0 评论 -
C++条件编译
条件编译:一般情况下,源程序中所有的行都参加编译。但有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件,这就是“条件编译”(conditional compile)。常用形式:条件编译命令常用的有以下形式:(1) #ifdef 标识符 程序段1 #else原创 2013-09-26 18:11:07 · 807 阅读 · 0 评论 -
int (*p)[4]等同于int *p[4]吗?
答:不等同。int *p[4]是一个指针数组,就是数组里面放的是指针。由于[]比*优先级更高,因此p先与[4]结合,形成p[4]形式,这显然是数组形式,它有4个元素,然后再与p前面的*结合,*表示此数组是指针类型的,每个数组元素(也就是一个指针变量)都可以指向一个整形变量。*p[4]是指针数组,他是数组。数组里面放的是指针,简单的说定义了4个指针,分别是*p[0] *p[1]原创 2013-09-26 18:03:46 · 1632 阅读 · 0 评论 -
PHP实现折半(二分)查找算法
/** * Description:php实现二分查找算法的类 * @author wzy */class binary_search{ public $arr; public $key; function __construct($arr,$key){ //这里初始化的数组已经是有序数组 $this->arr=$arr; $this->key=$key; }原创 2013-09-21 17:21:52 · 2005 阅读 · 0 评论 -
php归并排序
$a=array('1','2','3','4','22'); $b=array('1','3','4','11','22','23'); f($a, $b, 5, 6, $t); print_r($t); function f(&$a, &$b, $n, $m, &$t){ $i=0;$j=0; while($i<$n && $j<$m){ if($a[$i]==$b[$j]){原创 2013-09-21 20:33:29 · 914 阅读 · 0 评论