- 博客(10)
- 资源 (20)
- 收藏
- 关注
原创 排序之插入排序
/* 名称:直接插入排序、折半插入排序、希尔排序 说明:本程序比较了插入排序的几种方法。 (1)、直接插入排序: 其适用于顺序存储和链式存储的线性表。它的时间复杂度为O(N2),主要花在比较和移动元素上。(2)、折半插入排序: 这是在(1)中的方式上做了一点小改变,因为已经排序完成的序列是有序的(好像是废话) 所以每次比较时利用折半的方式,
2017-12-03 16:58:55 140
原创 排序二叉树的建立、插入、删除、查找
/* 名称:排序二叉树的建立、插入、删除、查找 说明:对于排序二叉树来说,其创建、插入和查找的算法差不多。简单来说,就是小了往左,大了往右。 对于二叉排序树的删除来说,稍微要复杂一点,要分成基本的几种情况:即 (1)、删除的结点是叶子节点 (2)、删除结点只有左子树或者只有右子树 (3)、删除的结点既有左子树、又有右子树此外还要注意删除的结点是否是根节
2017-12-03 16:33:34 2417 2
原创 树存储结构的几种表示方法
/* 名称:树存储结构的几种表示方法 说明:对于树的存储结构,一般有以下三种表示方法。 (1)、双亲表示法。这种存储方式采用一组连续的空间来存储每个结点,同时在每个结点中增设一个伪指针, 指示其双亲在结点中的位置。这种方式比较容易找到双亲,但是不容易找到孩子。 (2)、孩子表示法。这种方法是将每个结点的孩子结点都用链表链接起来形成一个线性结构。这种方式比较
2017-12-03 16:31:49 13134
原创 判断两个二叉树是否相似
/* 名称:判断两个二叉树是否相似 说明:此处的两个方法一个是非递归,一个是递归算法。其实两个算法的本质思路是一样的就是,判断位置相同的两个结点是否同时为空或同时不为空。只是具体的实现不一样。对于层次遍历法:此处不小心用错了,本应该用队列来当作排列下一层元素的。歪打正着,此处用栈也可以,只是判断的结点顺序不一样。队列的话,是从每一层的左端到右端。栈的话,是从右端到左端。在此处都没影响
2017-12-03 16:30:06 9046 1
原创 已知满二叉树的先序遍历,求其后序遍历
/* 名称:已知满二叉树的先序遍历,求其后序遍历 说明:此处用的是递归,每次确定一个数的范围。*/stack<int> _sta; //全局栈,用来记录后序遍历。//已知满二叉树的先序遍历,求其后序遍历void PostWithPre(int pre[],int beg,int _end){ int length = _end - beg;
2017-12-03 16:28:05 2483 8
原创 查找之Hash查找
/* 名称:Hash查找 说明:Hash查找本质上就是把元素的关键字和元素的存储位置建立了一个映射联系,这样使得元素可以通过关键字立即查找到相应位置。这是最快的查找方式。但是在进行映射时有两个问题需要解决: 1、哈希函数的构造(映射函数) 一般来说,哈希函数有以下几种常用的构造方式 (1)、直接定址法 (2)、除留余数法
2017-12-03 16:26:23 459
原创 查找之索引查找
/* 名称:索引查找(分块查找) 说明:本程序写的有不少问题,用的是STL,可能STL内部的机制不是很熟悉,一直没改成功先贴上来。以后有时间在重新修改吧。 对于索引查找来说,从某种程度上说,其是二分查找和顺序查找的一种折中。它要求有两个表一个索引表,每个索引表中的索引对应一个元素表(此处的索引即为对应元素表中元素的最大值)。还要求表间有序,表内无序。这样首先在索引表中查
2017-12-03 16:24:18 643
原创 查找之折半查找
/* 名称:折半查找 说明:这是比顺序查找要更有效率的一种方式。它是按照每次减少一半的规模进行查找的。但是其存储结构必须要是顺序结构,即连续的存储空间,而且元素间必须有序。这就是我在上节顺序查找中说到的,事先进行按照一定的规律进行存储,这样查找时就能减少时间复杂度。 对于折半查找来说,其时间复杂度为O(log2N)。*///折半查找(n为元素个数,key为待查找元素)
2017-12-03 16:22:29 345
原创 查找之顺序查找
/* 名称:顺序查找 说明:对于查找来说,最简单的莫过于顺序查找:也就是一个一个对比,你是我要找的吗?不是啊,那你呢?… 这个查找对于元素存储没有规律的来说比较实用,但是比较费时。查找成功的平均长度为((n+1)/2)查找失败则要查找(n)个元素。在实际的现实生活中,一般都会事先将元素按照一定的规律进行存储,这样在查找时就可以用一些其他方法,来提高查找效率。*///顺序
2017-12-03 16:20:54 681
原创 求二叉树的宽度
/* 名称:求二叉树的宽度 说明:此程序用的是层次遍历法。通过记录每一层的节点个数,在比较,得出最大一层的节点个数,即树的宽度。*///求树的宽度(层次遍历法)int WidthOfTree(BiTree T){ queue<BiTNode *> _que; int most_width = 0,temp_width = 0; //前者用来记录最大的宽
2017-12-03 16:16:13 918
HelloOs相关资源
2020-08-15
PlayerTest.zip
2019-12-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人