算法
Norton-JAVA工程师
android+java后端架构
展开
-
广度优先遍历代码
广度优先周游二叉树(层序遍历)是用队列来实现的,从二叉树的第一层(根结点)开始,自上至下逐层遍历;在同一层中,按照从左到右的顺序对结点逐一访问。按照从根结点至叶结点、从左子树至右子树的次序访问二叉树的结点。算法: 1初始化一个队列,并把根结点入列; 2根节点入队 3循环直到队列空 3.1 q=队列头元素出队 3.2 访问q的数据域转载 2014-03-21 15:41:30 · 897 阅读 · 0 评论 -
红黑树插入与删除 算法实现+代码(二)
如下图,如上图,原创 2014-04-04 14:36:26 · 2145 阅读 · 0 评论 -
红黑树的插入操作--伪代码详细分析
学习的时候,最好把性质copy到记事本中,当别人提到性质1,2,3,4,不用翻来翻去。下面的是我学习《算法导论》的笔记。性质1. 节点是红色或黑色。性质2. 根是黑色。性质3. 所有叶子都是黑色(叶子是NIL节点)。性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质5. 从任一节点到其每个叶子的所有简单路径都包含相同数原创 2014-03-28 12:23:50 · 2955 阅读 · 0 评论 -
红黑树删除本质 与 伪代码分析
性质1. 节点是红色或黑色。性质2. 根是黑色。性质3. 所有叶子都是黑色(叶子是NIL节点)。性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点红黑树的删除操作是在二叉树删除操作后(加入Nil[T]节点,并修改NULL判断逻辑),加入调整函数,使得原创 2014-03-28 15:44:47 · 2502 阅读 · 0 评论 -
只有五行的Floyd最短路径算法
参考http://ahalei.blog.51cto.com/4767671/1383613弗洛伊德原创 2014-04-22 16:33:21 · 884 阅读 · 0 评论 -
C语言打印二叉树
基于上一篇,加入了树枝,看起来更直观,不过加这个树枝,算那个横线和空格花了我不少时间,不过最后能写出来,挺爽。上一篇http://blog.csdn.net/xzongyuan/article/details/21945749 C语言打印二叉树在广度遍历的时候,有非常繁杂的计算符号的方法,要看懂可能得花时间。(1)整个设计的难点在sprintf函数运用。sprint原创 2014-03-25 16:42:51 · 8038 阅读 · 3 评论 -
C语言括号匹配【堆栈原理】
利用norton@norton-laptop:~/learning/sample code/algrithm/parenthesis_matching$ ./match.o(1+3*[4/6])+{4*[5+6]}input (input [output ]output )input {input [output ]output }原创 2014-04-22 14:39:39 · 1112 阅读 · 0 评论 -
C语言打印树基础
相信二叉树是学算法很重要的一门课,但是网上的实现都不好找,于是自己写来玩玩,造福后人。基于前一篇http://blog.csdn.net/xzongyuan/article/details/21880013(实现广度遍历)实现了二叉树的打印,要点:1.要使得二叉树节点排列对齐,首先以个位数作为模型,计算出每个字符之间的间距是多少// ***************0****原创 2014-03-24 13:53:09 · 5623 阅读 · 1 评论 -
C语言实现冒泡算法
打算认真研究算法,所以,把这些基本算法都写出来,练练手。原创 2014-04-18 12:17:38 · 1360 阅读 · 0 评论 -
红黑树插入与删除 算法实现+代码(一)
要实现红黑树节点的插入删除,得先实现二叉树节点插入删除,在这基础上加入红黑树调整算法。今天早上编写了二叉树的节点删除代码。结果如下实践经验:1.要删除节点,得先遍历出节点位置,我用数组存放遍历出来的结果。然后删除结果中倒数第三个数字时,遇到了困难:(1)刚开始直接用mid_travel算法遍历,发现递归的时候,要传递数组指针,且让指针地址增加,不好处理。(2原创 2014-04-02 12:18:31 · 1381 阅读 · 0 评论 -
C语言队列实现广度优先遍历
上一篇只是定义了数据结构。基于上一篇http://blog.csdn.net/xzongyuan/article/details/21832237增加了队列操作。打印出来的结果是这样的,没有分层打印,分层打印要计算几个参数,比较麻烦,所以我打算以一个正确的广度遍历为基础,对原先的数据结构和算法进行修改。代码比较繁杂,后续打算整理出头文件和多个c文件,脉络会更清晰,水平有限,仅供参考。原创 2014-03-23 18:15:25 · 4079 阅读 · 1 评论 -
C语言实现快速排序
前两章提到的桶排序浪费内存空间,冒泡排序复杂的高,为O(N)原创 2014-04-18 16:18:42 · 728 阅读 · 0 评论 -
简化的桶排序(Bucket Sort)
运行结果norton@norton-laptop:~/learning/sample code/algrithm/sort/bucket$ ./simple_bucket.ohow many number will you input:5Let's begin input num 0~1000:102030405050 40 30 20 10原创 2014-04-18 11:22:06 · 960 阅读 · 0 评论 -
C语言二叉树与队列实现基础代码
http://blog.csdn.net/xzongyuan/article/details/21830097c语言队列基本操作代码基于是上一篇做了修改,主要修改结构提,因为准备加入树的操作,代码会越来越繁杂,为了还原整个改写过程,分步显示,#include#includetypedef struct _node{ int value; struct原创 2014-03-22 22:58:37 · 1304 阅读 · 1 评论 -
c语言队列基本操作代码
为了打印binary tree,要使用队列,所以先写个程序测试下#include#includetypedef struct _node{ int value; struct _node *next;}Node;typedef struct _Queue{ Node *head; Node *tail;}Queue;Queue* init_qu原创 2014-03-22 22:15:26 · 7134 阅读 · 0 评论 -
printf打印二进制数据
#include void decToBin(int num,int base);int main(){ int decimalNum; int base=2; printf("Enter number in decimal:"); scanf("%d",&decimalNum);printf("\n"); printf("Decimal%d:",decimalNum);原创 2014-06-06 15:48:16 · 13656 阅读 · 1 评论