自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

啦啦啦

取法其上,得乎其中,取法其中,得乎其下,取法其下,法不得也

  • 博客(22)
  • 收藏
  • 关注

原创 Huffman

Huffman算法霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现概率的方法得到的,出现概率高的字母使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。

2017-07-30 15:41:59 398

原创 Dijkstra

Dijkstra 算法Dijkstra算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边

2017-07-30 15:14:59 497

原创 拓扑排序

拓扑排序其实只需要讲解清楚拓扑排序的原理就可以了. 每次将入度为 0 的数入队, 然后将它所指向的数的入度 -1.再重复将入度为 0 的数如队, 直到所有的数都入队结束如图, 因为 1 的入度为 0 , 现将 1 入队, 接下来将入度为 0 的 2 入队, 再是 4 ,再是 3 , 最后 5 入度

2017-07-30 14:06:57 369

原创 不相交集ADT

不相交集ADTADT的知识很简单, 类似于游标, 但还有它的专业解释等价关系等价关系是满足下列三个性质的关系R: (自反性)对于所有的a∈S,aRa (对称性)aRb当且仅当bRa (传递性)若aRb且bRc,则aRc.动态等价性问题一个元素a∈S的等价类是S的一个子集,它包含所有a有关系的元素。

2017-07-26 16:38:09 402

原创 快速排序

快速排序快速排序使用分治法策略。 它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。代码就表达了快排的核心思想, 找到比其小的数, 就换位置, 左右左右…的方向来插入数

2017-07-26 15:55:53 349

原创 归并排序

归并排序归并也是经典的分治策略, 它将问题分成一些小的问题后递归求解, 而治就是将分段的各个答案合并补在一起分解 – 将当前区间一分为二,即求分裂点 mid = (low + high)/2; 求解 – 递归地对两个子区间a[low…mid] 和 a[mid+1…high]进行归并排序。递归的终结条件是子区间长度为1。 合并 – 将已排序的两个子区间a[low…mid]和 a[mid+1…hi

2017-07-26 15:30:22 317

原创 桶排序

桶排序桶排序主要是开辟一个很大的数组, 将其都赋值为0; 其作用为 : 如 : 输入数据 1 , 2 ,4 ,3 , 7, 1; 大数组 a[1] = 2, a[2] = 1, a[3] = 1, a[4] = 1, a[7] = 1;其余全部为0;a[i] = i出现的次数;然后浏览数组, 将不为0 的a[i] 的i 输出, 即实现排序;

2017-07-26 14:57:33 369

原创 堆排序

堆排序初始化堆:将数列a[1…n]构造成最大堆。交换数据:将a[1]和a[n]交换,使a[n]是a[1…n]中的最大值;然后将a[1…n-1]重新调整为最大堆。 接着,将a[1]和a[n-1]交换,使a[n-1]是a[1…n-1]中的最大值;然后将a[1…n-2]重新调整为最大值。 依次类推,直到整个数列都是有序的。对排序主要是将最小(或者最大)先找到, 排到a[0], 再将a[0] 与 最后一位元素交换

2017-07-26 14:45:00 282

原创 插入排序

插入法插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。每次取出一个数, 将它与前一个数比较, 再放在将其交换位置

2017-07-26 14:37:33 296

原创 链表的游标实现 - 一道算法题

链表的游标实现 - 一道算法题输入包含多组数据。每组数据占一行,包含不超过100000个字母、下划线、字符“[”或者“]”。其中字符“[”表示Home键,“]”表示End键。输入结束标志为文件结束符(EOF)。输 入文件不超过5MB。对于每组数据,输出一行,即屏幕上的悲剧文本。//样例输入:This_is_a_[Beiju]_text[[]][][]Happy_Birthday_to_Tsin

2017-07-26 13:49:50 860

原创 链表的游标实现

链表的游标实现诸如BASIC和FORTRAN等许多语言都不支持指针。如果需要链表而又不能使用指针,这时我们可以使用游标(cursor)实现法来实现链表。在链表的实现中有两个重要的特点:数据存储在一组结构体中。每一个结构体包含有数据以及指向下一个结构体的指针。一个新的结构体可以通过调用malloc而从系统全局内存(global memory)得到,并可以通过free而被释放。说得明了一些, 就是用数组

2017-07-26 13:46:38 430

原创 散列 - 开放定址散列

散列 - 开放定址散列开放定址散列法是另一种不用链表解决冲突的方法 不过, 在开放定址散列标准的删除方法不能使用而大致的算法思路跟其散列-分离链表法类似

2017-07-26 12:00:10 474

原创 散列 - 分离链接法

散列 - 分离链接法通过某种特定的函数/算法(称为散列函数/算法)将要检索的项与用来检索的索引(称为散列,或者散列值)关联起来,生成一种便于搜索的数据结构(称为散列表)。也译为散列。 我们需要将输入的字符串进行转换, 将其转换成数字, 在插入保存的数, 当然, 也可能会存在不同字符串对应相同的数字, 这时, 为了保证不冲突, 我们将字符串对应相同的数字用链表表示, 用链表保存我们要存储的东西.

2017-07-26 11:16:27 938

原创 AVL树

AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。AVL树中进行插入或删除节点后,可能导致AVL树失去平衡。这种失去平衡的可以概括为4种姿态:LL(左左),LR(左右),RR(右右)和RL(右左)。LL : 左侧深度高 RR : 右侧深度高 LR : 根的左子树的高度比根的右子树的高度深 RL : 根的右子树的高度比根的左子树的高

2017-07-25 18:42:11 624

原创 动态插入节点

输入L, R来放入带插入的二叉树中, 如:LLLL代表将数插入到 左左左左的位置, LRLRLR也同理, 只需要将输入的放在字符串中一个一个读取即可

2017-07-25 18:17:21 535

原创 满二叉树

除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树. 如果一棵二叉树的结点要么是叶子结点,要么它有两个孩子结点,这样的树就是满二叉树。用链表从上往下, 从左往右依次标记为1 ,2 , 3, 4, 5,…

2017-07-25 17:58:01 1008

原创 二叉树

二叉树**二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒因为有左右之分, 所以在创建链表的时候, 应该创建两个分支, 左分支和右分支

2017-07-25 17:06:54 567

原创 栈的数组实现

栈的数组实现,顾名思义, 就是不适用链表指针的形式的栈. 了解链表的基本用法,也就很清楚栈的数组原理.

2017-07-19 17:12:03 419

原创 链表的指定位置输出

当输入1时,输出链表中第一元素的数, 同理,输入3, 输出第三个元素

2017-07-19 17:00:15 1034

原创 栈ADT

## 栈 ##栈(stack),是一种线性存储结构,它有以下几个特点: (01) 栈中数据是按照”后进先出(LIFO, Last In First Out)”或者先进后出(FILO)方式进出栈的。 (02) 向栈中添加/删除数据时,只能从栈顶进行操作。定义初始链表struct Node;

2017-07-19 16:51:47 662

原创 链表的并集

链表的并集当有两个集合A,B求两个集合的并集 如: A = { 1, 2, 3 ,4} B = { 3, 4, 5, 6} A U B = { 1 ,2 ,3 ,4 ,5 ,6 };

2017-07-19 16:34:13 1709

原创 链表

链表链表相似于数组的部分功能也不同于数组,在插入元素,删除元素方面强于数组.链表删除,插入更加的容易. 链表由一系列不必在内存中相连的结构组成.每一个结构均含有表元素和指向包含该元素后继元的结构指针. 这是链表的创建,先定义结构体//定义结构体

2017-07-19 16:22:44 434

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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