Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

哈夫曼树与编码译码实现

哈夫曼树与编码译码实现

一、哈弗曼树的基本概念。哈夫曼树,又称最优树,是一类带权路径长度最短的树。下面有几个概念:(1)路径。树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。(2)路径长度。路径上的分枝数目。(3)树的路径长度。从树根到每一个结点的路径长度之和。(4)结点的带权路径长度。从该结点到树根之间的路径长度与结点上权的乘积。(5)树的带权路径长度。树中所有叶子节点的带权路径长度之和。通常记作:带权路径长度WPL最小的二叉树叫做最优二叉树或哈夫曼树。二、构造哈夫...
归并排序的分析及实现

归并排序的分析及实现

思想:将两个(或以上)的有序表组成新的有序表。说明:(1)更实际的意义:可以把一个长度为n 的无序序列看成是 n 个长度为 1 的有序子序列 ,首先做两两归并,得到 én / 2ù 个长度为 2 的子序列 ;再做两两归并,…,如此重复,直到最后得到一个长度为 n 的有序序列。(2)性能分析。空间性能:辅助空间 O(n)。时间复杂度:O(nlogn)。稳定性:稳定。(3)虽然归并排序的运行时间是O(nlogn),但它...
希尔排序的分析及实现

希尔排序的分析及实现

思想:先将整个待排记录序列分割成若干子序列,分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。说明:(1)子序列的构成不是简单地“逐段分割”,而是将相隔某个增量dk的记录组成一个子序列,让增量dk逐趟缩短(例如依次取5,3,1),直到dk=1为止。由于这个原因,希尔排序也叫缩小增量排序。(2)优点:让关键字值小的元素能很快前移,且序列若基本有序时,再用直接插入排序处理,...
堆排序的分析及实现

堆排序的分析及实现

(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树。二叉堆可以分为两种形式:最大堆和最小堆。若将记录按从大到小排列,建“小”顶堆。若将记录按从小到大排,建“大”顶堆。说明:在堆排序算法中,我们使用的是最大堆,最小堆通常用于构造优先队列。算法分析:时间复杂度是O(nlogn)。堆排序属于原址排序:任何时候都只需要常数个额外的元素空间存储临时数据。堆排序是不稳定的排序算法。#include <stdio...
《APUE》进程环境

《APUE》进程环境

一、main函数。main函数的原型如下。argc是命令行参数的数目,argv是指向参数的各个指针所构成的数组。int main(int argc, char *argv[])当内核执行C程序时(使用一个exec函数),在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址,这是由连接编辑器设置的,而连接编辑器则由C编译器调用。启动例程从内核取得命令行参数和环境变量,然后为调用main函数做好安排。启动例程使得main返回...
C#泛型中的类型约束和类型推断

C#泛型中的类型约束和类型推断

前一篇文章介绍了泛型的基本概念(见 http://www.linuxidc.com/Linux/2015-02/113465.htm)。在本文中,我们看一下泛型中两个很重要的特性:类型约束和类型推断。类型约束相信你还记得前面一篇文章中的泛型方法,在这个泛型方法中,我们就使用了类型约束。类型约束(type constraint)进一步控制了可指定的类型实参,当我们创建自己的泛型类型或者泛型方法的时候,类型约束是很有用的。回到前一篇例子中的泛型方法,这个泛型方...
C#中值类型和引用类型

C#中值类型和引用类型

本文将介绍C#类型系统中的值类型和引用类型,以及两者之间的一些区别。同时,还会介绍一下装箱和拆箱操作。值类型和引用类型首先,我们看看在C#中哪些类型是值类型,哪些类型是引用类型。值类型:基础数据类型(string类型除外):包括整型、浮点型、十进制型、布尔型。 整型(sbyte、byte、char、short、ushort、int、uint、long、ulong )浮点型(float 和 double )十进制型(decimal )布尔型(bool )结...
理解C#事件

理解C#事件

前面文章中介绍了委托相关的概念(http://www.linuxidc.com/Linux/2015-02/113469.htm),委托实例保存这一个或一组操作,程序中将在某个特定的时刻通过委托实例使用这些操作。如果做过GUI程序开发,可能对上面的描述会比较熟悉。在GUI程序中,单击一个button会触发一个click事件,然后会执行一系列的操作,这一系列的操作就被存放在一个委托实例中。接下来我们就看看事件。使用委托中的问题回到前面文章中苹果和富士康的例子...
C#委托的基本概念

C#委托的基本概念

最近在看深入理解C#,发现这是一本很不错的书,将很多C#的知识点联系了起来,更像是一本C#历史书,从C# 1一步步介绍到C# 4。所以准备一边看,一边整理读书笔记。那么就先从委托开始。委托是C#中一个非常重要的概念,从C# 1开始就有了委托这个核心概念,在C# 2和C# 3中委托又有了很多改进。通过委托,我们可以将一个方法当作对象封装起来,并且在运行时,我们可以通过这个对象来完成方法的调用。委托的使用首先,来个简单的例子,苹果只负责设计iphone,而把组...
Python 编程风格

Python 编程风格

概要:1、Python语句和语法2、Python标识符3、基本编程风格一、Python语句和语法1、可以从一行的任何地方开始2、续行:""":闭合操作符,单一语句跨多行3、代码组、缩进相同的一组语句构成的一个代码块、首行以关键字开始,如if、while 等,以冒号结束、Python使用缩进来分隔代码组,同一代码组的代码行必须严格左对齐,否则会造成语法错误 、同一行放置多个语句;:以分号作为分隔符、模块每一个Python脚本文件都可以被当成是一个模块;模块的...
C++容器模板在共享内存中的使用

C++容器模板在共享内存中的使用

本文用于探讨在共享内存中使用容器的好处,以及几种在共享内存中C++模板容器的方法。1 为什么要在共享内存中使用模板容器?为什么要避开普通内存而选择共享内存,那肯定是使用共享内存的优势:共享内存可以在多进程间共享,到达进程间通信的方式。共享内存可以在进程的生命周期以外仍然存在。这就可以保证在短暂停止服务(服务进程coredump,更新变更)后,服务进程仍然可以继续使用这些共享内存的数据。如果这些优势在加上C++容器模板使用方便,开发快速的优势,无疑是双剑合璧...
shell脚本中grep时关于变量带双引号的小问题

shell脚本中grep时关于变量带双引号的小问题

今天在写一个shell脚本的时候,有一个操作是使用grep命令在一个文件中搜索指定内容。指定内容存放在文件中,使用一个变量去获取文件中内容,再传到grep命令中去。 这段代码如下:for target in `cat content.txt`do grep $target test.txt >>result.txtdonecontent.txt文本中的内容为:"域[2]""域[3]""域[4]" 因为使用grep时,最后要执行的命令是(g...
<< 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 >>