数据结构
文章平均质量分 69
TrueLie
这个作者很懒,什么都没留下…
展开
-
二叉树遍历的递归算法程序
二叉树的遍历是典型的递归算法。所谓树的遍历是指按某条搜索路径访问树中每个结点,使得每个结点均被访问一次,而且仅被访问一次。我的程序给出了二叉树的先序遍历,中序遍历,后序遍历和求二叉树的深度。程序如下: #include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define MAX(a,b)转载 2007-07-14 21:57:00 · 4314 阅读 · 0 评论 -
红黑树
红黑树是一种自平衡二叉查找树,是在计算机科 学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由Rudolf Bayer发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它可以在O(log转载 2007-07-12 22:54:00 · 1298 阅读 · 0 评论 -
模式匹配与KMP算法
模式匹配的KMP算法详解这种由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现的改进的模式匹配算法简称为KMP算法。大概学过信息学的都知道,是个比较难理解的算法,今天特把它搞个彻彻底底明明白白。注意到这是一个改进的算法,所以有必要把原来的模式匹配算法拿出来,其实理解的关键就在这里,一般的匹配算法:int Index(String S,String T,int pos转载 2007-07-12 22:18:00 · 1113 阅读 · 0 评论 -
各种内部排序算法复杂度的比较和排序方法的选择
按平均时间将排序分为四类: (1)平方阶(O(n2))排序 一般称为简单排序,例如直接插入、直接选择和冒泡排序; (2)线性对数阶(O(nlgn))排序 如快速、堆和归并排序; (3)O(n1+£)阶排序 £是介于0和1之间的常数,即0 (4)线性阶(O(n))排序 如桶、箱和基数排序。转载 2007-07-12 22:15:00 · 3774 阅读 · 0 评论 -
几个数据结构的程序
典型的约瑟夫环问题。原问题比你的问题要复杂一点。我以前写的程序:1.用数组。# include "stdio.h"# define SIZE 100main(){ int m,n,i; int array[SIZE]; printf("约瑟夫环求解,当前设置最大人数为%d./n",SIZE); printf("报数上限:/n"); scanf("%d",&m);转载 2007-07-12 21:58:00 · 1549 阅读 · 0 评论 -
已知二叉树的先序和中序求后序
二叉树的根结点(根据三种遍历)只可能在左右(子树)之间,或这左子树的左边,或右子树的右边。 如果已知先序和中序(如果是中序和后序已知也可以,注意:如果是前序和后序的求中序是不可能实现的),先确定这棵二叉树。 步骤:1,初始化两个数组,存放先序合中序。 2,对比先序和中序,在中序忠查找先序的第一个元素,则在中序遍历中将这个元素的左右各元素分成两部分。即的左边的部分都在这个元转载 2007-07-14 22:03:00 · 8616 阅读 · 5 评论 -
二叉树--基本概念
树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存 在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。 又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。转载 2007-07-12 23:32:00 · 1417 阅读 · 0 评论 -
各种排序算法的比较
1.稳定性比较 插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的 选择排序、希尔排序、快速排序、堆排序是不稳定的2.时间复杂性比较 插入排序、冒泡排序、选择排序的时间复杂性为O(n2) 其它非线形排序的时间复杂性为O(nlog2n) 线形排序的时间复杂性为O(n);3.辅助空间的比较 线形排序、二路归并排序的辅助空间为O(n),其它排序的辅助空转载 2007-07-12 23:12:00 · 3133 阅读 · 0 评论 -
二叉树的五个性质
性质1:在二叉树的第i层上至多有2i个结点(根节点为1)。 性质2:深度为k的二叉树至多有2k-1个结点(根节点为1)。 性质3:对任一棵非空的二叉树T,如果其叶子数为n0,度为2的结点数为n2,则:n0 = n2 +1 性质4:有 n 个结点的完全二叉树( n > 0 )的高度为log2+1(对前面的对数取最小的整数)。 性质5:若对满二叉树或完全二叉树按照“从上到下,每层从左到右,根结点编号为转载 2007-07-12 22:16:00 · 3747 阅读 · 2 评论 -
排序
冒泡法排序(C语言)#include"stdio.h"#define True 1#define False 0void main(){ int a[7]={9,12,6,15,3,16,10}; int i,temp; for(i=1;i { int j; int ok=True; for(j=0;j { if(a[j]>转载 2007-07-12 22:10:00 · 1198 阅读 · 0 评论 -
排序算法空间、时间复杂度
排序算法空间、时间复杂度简单排序法—— 冒泡法是第二维循环中自己循环,找最小或最大值 选择排序和交换排序是第二维循环与第一维循环中的值比较;交换法最清晰,选择法作了改进,只交换位置标号,算法复杂度没变。 插入法,它的基本工作原理是抽出牌,在前面的牌中寻找相应的位置插入,然后继续下一张(较为复杂) 高级排序法—— 快速排序,从冒泡法改进得到,基本思转载 2007-07-12 22:13:00 · 3390 阅读 · 0 评论