
算法
视学算法
个人公众号:视学算法,后台回复【学习】可获得5000T程序员全栈资料
展开
-
轻松理解汉诺塔问题(图解java描述)
本文章适用于考研初复试、保研面试。本人出于对计算机爱好,但是感觉之前掌握算法不扎实,现在重头开始总结算法的相关知识,也是为了读更好学校研究生。多多支教。原创 2017-08-08 11:09:33 · 12958 阅读 · 7 评论 -
二叉树的数据结构定义
//二叉树的数据结构定义typedef struct BiTNode{ int data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;原创 2017-08-13 11:10:50 · 3155 阅读 · 0 评论 -
二叉树的遍历
二叉树的遍历: 是指从根节点出发,按照某种次序一次访问二叉树中的所有节点,使得每个结果被访问一次且仅被访问一次 分为四种: 根据根节点的位置分为四种: 前序遍历、中序遍历、后序遍历、层序遍历 -前序遍历: -中续遍历: -后序遍历: -层序遍历: 二叉树的建立和遍历算法 内存是线性的,我们很好写出前中后遍历结果,但是计算机应该怎么处理呢?原创 2017-08-13 14:46:00 · 329 阅读 · 0 评论 -
二叉树的建立和遍历程序代码(Java,C)
C语言 考虑到c语言的scanf(“%c”,&c)是输入后一个字符一个字符的取出这一特性,我们选择用createBiTree()方法接受输入的参数,然后直接建立。运用递归的方式创建二叉树的数据结构,结束条件为 c==’ ‘; 代码如下:#include <stdio.h>#include <stdlib.h>/*山东科技大学小昝*/typedef struct BiTNode{ c原创 2017-08-13 14:58:30 · 1333 阅读 · 0 评论 -
线索二叉树代码
C语言 注:方便复习#include <stdio.h>#include <stdlib.h>//山东科技大学 小昝#define ERROR 0#define OK 1typedef enum{Link, Thread} PointerTag; //link = 0表示指向左右孩子指针原创 2017-08-14 16:40:45 · 953 阅读 · 0 评论 -
树、森林与二叉树的转换
我们惊人的发现:树、森林的前跟遍历和二叉树的前序遍历结果相同;树、森林的后跟遍历和二叉树的中序遍历结果相同! 参考资料:http://www.cnblogs.com/xxiaoye/p/3642533.html原创 2017-08-14 17:08:22 · 391 阅读 · 0 评论 -
赫夫曼树(哈夫曼树)
赫夫曼树—》赫夫曼编码 在数据膨胀、信息爆炸的今天,数据压缩的意义不言而喻。 一个字节8位 赫夫曼编码压缩—无损压缩 可以看成成绩的排布。成绩是70-90之间占有70%,所以以下两个数据结构优化性是不一样的。下面第二个图的结构明显好于第一个图的。 WPL的值越小,说明构造出来的二叉树性能越优。最优的树就是赫夫曼树 例如这个图:WPL = 5*1+15*2+70*3+10*3 =原创 2017-08-14 17:30:54 · 673 阅读 · 0 评论 -
赫夫曼编码(基于赫夫曼树的实现)
上一篇文章中我们探讨了赫夫曼树的基本原理和构造方式,而赫夫曼编码可以很有效地压缩数据(通常可以节约20%-90%的空间,具体压缩率依赖于数据的特性)。 名词:定长编码,边长编码,前缀码(装B用的) 定长编码:像ASCII编码 变长编码:单个编码的长度不一致,可以根据整体出现频率来调节 前缀码:所谓的前缀码,就是没有任何码字是其他码字的前缀 赫夫曼编码是基于贪心算法实现的(我以后的文章中会提原创 2017-08-15 11:41:04 · 652 阅读 · 0 评论 -
阿广实习总结:在中科院实习的日子,我孤独寂寞冷啊!
欢迎关注阿广的微信公众号:视学算法大家好,我是阿广。当你看到这儿的时候,阿广正在祝福你五一快乐了。不多说,大家伙五一期间吃好喝好玩好学好工作好。19年2月28号,阿广只身一人来到中科院软件所实习,直到今天,19年5月1日,我的实习结束了。在我的人生中不止一次的感叹时间如此之快,这一次已经不知道是多少次了,我使劲把之前有这种离别感觉的时刻全部都回忆了一遍,却发现这种感觉是有规律可循的,于是我...原创 2019-05-05 19:14:07 · 1197 阅读 · 0 评论 -
二叉树
世上树有万千种,唯有二叉纸上谈。二进制:B 十进制:D 十六进制:H 神使用递归,人使用迭代(迭代的效率更高) 说了这么多,谈一下二叉树的定义。二叉树的定义在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树的性质二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k原创 2017-08-12 21:59:43 · 434 阅读 · 0 评论 -
树
树的存储结构怎么表示呢?我们来思考一下。 我们之前学过线性表(一对一的关系)。那么我们如何通过顺序表或者链表来表示我们的树呢? 第一步: 树可分为双亲(Parent),孩子(child),兄弟(brother) 第二步 双亲表示法:时间复杂度:O(1) 孩子表示法: 方案一: 缺点:太费空间 方案二: 缺点:花费巨大的时间维护表 方案三: 数组和链表的结合 缺点原创 2017-08-12 21:27:57 · 357 阅读 · 0 评论 -
KMP算法
KMP算法又称“看毛片”算法,是大学生必备的算法之一。也是考研重点,同样也是当代大学生的盲点所在。细细品味大学生活的点点滴滴,会有成功的一天。 C语言#include<stdio.h>#include<string.h>void makeNext(const char P[],int next[]){ //P为模式串 //i为后缀 //j为前缀 int i,j原创 2017-08-11 21:27:41 · 2318 阅读 · 0 评论 -
时间复杂度
让编程改变世界Change the world by program---小昝当我们参加比赛,例如蓝桥杯、ACM…时,往往一个题目都会有内存限制,而且学好算法必须要明白算法的复杂程度,同时时间复杂度也是上研究生的一个必备知识点,所以我们有必要去研究一下算法的时间复杂度(时间复杂度、空间复杂度)原创 2017-08-08 13:07:29 · 874 阅读 · 0 评论 -
C语言初步学习(适合与学习过C++和java的童鞋)
因为本人对Java比较熟悉,因为算法大部分都是c写的,所以研究了c语言。原创 2017-08-08 16:10:24 · 562 阅读 · 0 评论 -
图的建立与查找
本人做此文档用于复习,如有什么不明白的地方,可以留言。本文档是一步一步教你怎么写算法的,首先是建立一个节点,然后建立了一条线,之后用一个函数把线和节点联系起来,最后在把线和节点组成图。#include <stdio.h> //导入io包 #include <stdlib.h> #include <assert.h> //设置宏,用于断点检查错误。 //定义数据结构//定义线数据结构 typ转载 2017-08-16 17:12:19 · 484 阅读 · 0 评论 -
汉诺塔问题---小昝
C语言#include <stdio.h>void move(char A,char C){ printf("%c ---> %c\n",A,C);}void Hannooi(int c,char A,char B,char C){ if(c==1){ move(A,C); }else{ Hannooi(c-1,A,C,B);原创 2017-08-10 17:20:04 · 352 阅读 · 0 评论 -
递归解决八皇后问题-小昝
引言 由于大学课堂中数据结构中并没有讲一些常见的算法,只是讲的比较简单的定义。所以拿出来暑假时间去研究经典的算法。本文章是研究的八皇后问题。八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。 思路 之前听到过很多次“八皇后问题”,但是都没有原创 2017-08-10 16:41:46 · 484 阅读 · 0 评论 -
图的深度优先遍历
图的深度优先遍历又称为图的深度优先搜索。 本文章分为用邻接矩阵和邻接链表来进行图的深度优先遍历。可以用于个人学习,本人写博客的目的是便于复习和记录所学的重点和难点,所以不全请大家见谅邻接矩阵 #include <stdio.h> #include <malloc.h> #define VERTEXNUM 5 void createGraph(int (*转载 2017-08-16 21:00:22 · 1138 阅读 · 0 评论 -
宽度优先遍历(BFS)
BFS邻接矩阵描述#include <stdio.h> #include <malloc.h> #define VERTEXNUM 5 //队列的元素 typedef struct qElement{ int value; struct qElement* pre; struct qElement* next; }st_q转载 2017-08-18 10:10:40 · 1110 阅读 · 0 评论 -
BF法-字符模式匹配
主要代码:int BFMatch(char *s, char *p){ int m, n; m = strlen(s); n = strlen(p); for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { if(s[i + j] != p[j])原创 2017-08-10 20:20:36 · 572 阅读 · 0 评论 -
新年总结:2018年,是我妈最快乐的一年
欢迎关注阿广的微信公众号:视学算法说在前边我也不知道如何算年龄,新年也算长大一岁,这样算的话,我21岁了。读者朋友们,大家新年好。时间过的好快啊,转眼间,我也到了快为人夫、谈婚论嫁的年纪。我想在今天这个隆重而又珍贵的时刻,重新介绍一下我自己。一方面为了读者朋友们了解我之后,知道我哪方面能够帮助到你们;另一方面我需要重新认识一下我自己。接下来,我将忆往昔峥嵘、谈岁月未来。从儿时记忆到憧憬...原创 2019-05-05 19:18:43 · 535 阅读 · 2 评论