`
chiyx
  • 浏览: 274828 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
huffman 编码是一种变长前缀式编码,通过利用被编码消息中符号的出现频率(频率出现越高的用越少的码),可以有效的节约空间。在 SICP 的2.3.4节通过实现一个huffman编码树来阐述通过表和数据抽象去操作集合和数的例子。   构建 huffman 编码树 huffman 树以表的方式来表示,将树分为 叶子节点*和 *非叶子节点 ('leaf symbol weight) : 叶子节点,包含标示叶子的符号'leaf, 实际字符 symbol,权重 weight(left right symbols weight): 非叶子节点, 包含左子树 left, 右子树 r ...
概述     SkipList 是由William Pugh发明的一种数据结构,它的作用类似平衡二叉树,对查找,删除,插入操作的时间复杂度为O(logN),是一种十分高效的查找结构。SkipList使用随机化的平衡方案取代了平衡二叉树的严格的平衡方案, ...
Linux系统用环境变量来在程序和脚本中标识它自己。这为你的程序提供了获得系统信息的一个简单方法。 问题是如何设置这些变量。 在你登陆Linux系统启动一个bash shell时,默认情况下bash在几个文件中查找并执行其中的命令。这些文 件称作启动文件。bash检查的启动文件取决于你启动bash shell的方式。启动bash shell有3种方式: 登陆时当做默认登陆shell 作为非登陆shell的交互式shell 作为运行脚本的非交互式shell 登陆shell 当你登陆Linux时,bash shell会作为登陆的shell启动。登陆shell会从4个不同的启动文 ...
转载地址:http://omiga.org/blog/archives/2269   目前的git仓库如github都是通过使用SSH与客户端连接,如果只是固定使用单个git仓库的单个用户 (first),生成生成密钥对后,将公钥保存至github,每次连接时SSH客户端发送本地私钥( ...
在python中任何对象都能被用于真值测试的表达式中,满足以下任意条件的对象的真值被认为是False: None False 数值对象中的0值,如0,0L,0.0,0j 空序列,如'',[],() 空map,{} 用户自定义类型中,如果类中包含__nonzore__(),当该方法返回False时,或者类中含有__len__()方法,当该方法返回0时.
abs(x) 返回数值的绝对值,参数x为整形或者浮点型 all(iterable) 判断迭代器对象中的元素是否全为真,若是则返回真,等价代码如下: def all(iterable):     for element in iterable:         if not element:             return False     return True any(iterable) 判断迭代器对象中的元素是否有任意一个元素为真,若是则返回真。 basestring() str 和 unicode的超类,不能被实例化。但是可以用于判断一个对象是否是字符串型的,isinst ...
    二叉查找树的效率依赖于其高度,为O(h),普通的具有N个结点的二叉查找树树的高度落差会很大,极端情况下会出现h=n的情况(插入结点序列为排好序的情况下),这样二叉查找树就退化为一个列表了。于是就出现了平衡 ...
修正:前驱与后继操作有误,修正 二叉查找树是满足如下性质的二叉树: 设x为二叉树中的一个结点,如果y是x的左子树中的一个结点,则key[y]<=key[x] 如果y是x的右子树,则key[x]<=key[y] 二叉查找树的数据结构和操作定义如下: /*file:biTree.h*/ #ifndef CHIYX_BITREE #define CHIYX_BITREE #ifndef NULL #define NULL 0 #endif typedef int DataType; //二叉树的节点结构 typedef struct BiTreeNode { ...
基数排序: #include <stdlib.h> #include "algosort.h" /*被排序元素的最大位数,4则意味着只能排序< 10000 的数*/ #define WIDTH 4 #define MAXK 10 //位数划分基于的基数,10表示为10进制划分 void radixSort(int a[], int n) { int i; void innerCountingSort(int a[], int n, int d); for (i = 0; i < WIDTH; i++) { in ...
快速排序: /* *将r位置中的位置移动到正确位置q上,并返回q,使得在a[p]..a[q-1] < a[q], a[q+1]..a[r] > a[q] */ int partition(int a[], int p, int r); void qSort(int a[], int p, int r); void quickSort(int a[], int n) { qSort(a, 0, n - 1); } void qSort(int a[], int p, int r) { int q; while (p < r) { q ...
堆排序: /** *排序过程中使用到的堆的结构 */ typedef struct heap { int heapSize; int *ap; int apLength; } Heap; /* *调整i位置上的元素,以保持最大堆的性质 */ void maxHeapify(int a[], int i, int hSize) { int l, r, largest; l = 2 * i + 1; r = l + 1; if (l < hSize && a[l] > a[i]) { largest = l; ...
正常进行2次比较的二分查找实现,取列表中点值,(1)先比较x是否小于v[mid],若小于则说明在mid的左侧,(2)继续比较x是否大于v[mid],若大于则说明在mid的右侧 (3)否则mid即为x的位置 int binsearch(int x, int v[], int n) { int low, high, mid; low = 0; high = n - 1; while(low <= high) { mid = low + high; if (x < v[mid]) { high = mid - 1; } else if ( ...
在使用Spring AOP的过程中,经常需要使用到各种不同的JoinPoint的定义,Spring AOP遵循了AspectJ形式的JoinPoint的定义形式,但是Spring目前只支持部分的AspectJ形式的Joinpoint的定义,同时Spring AOP只支持方法级别的JoinPoint。以下是我在学习Sp ...
假设一个场景:存在表user_score,该表的数据如下 idratescore1'0-4'102'0-4'403'0-4'304'0-4'205'5-10'106'5-10'407'5-10'308'5-10'209'11-20'1010'11-20'4011'11-20'3012'11-20'20 现在要求用一条查询语句取出每种rate下score最大的两条记录,也就算取出id为:2,3,6,7,10,11的记录,要求分别给出SQL和HIVESQL的查询语句 以下是我的想到的方案: SQL:对user_score根据rate进行分区后根据score进行倒序排序,然后应用row_numbe ...
在使用HIVE时,如果某个列应用了某个函数并使用如f(col) 重新命名列f(col) as fc, 对想基于fc直接直接group by时,如: select f(col) as fc, count(*) from table_name group by fc HIVE是不支持的,运行该语句会报错。 可以使用以下的两种方式来达到相同的目的: (1)使用子查询 select sq.fc, count(*) from (select f(col), col from tableName) sq group by sq.fc (2)不使用别名进行分组 select f(col) as f ...
Global site tag (gtag.js) - Google Analytics