数据结构和算法
文章平均质量分 80
micro小宝
这个作者很懒,什么都没留下…
展开
-
平衡二叉树的实现代码
前面已经讲过平衡二叉树的实现原理以及实例原理参见 http://blog.csdn.net/wxbmelisky/article/details/47755753 实例参见 http://blog.csdn.net/wxbmelisky/article/details/47787963平衡二叉树的实现代码如下原创 2015-08-21 20:53:00 · 9681 阅读 · 1 评论 -
排序算法之快速排序
快速排序算法是对冒泡排序算法的改进,它通常是实际排序应用中最好的一个选择。它的平均性能较好,虽然最坏情况下的时间复杂度比较高,但它的期望时间复杂度比较低,还有它能够进行原址排序,原址排序是指:在排序算法中对数组中元素进行重排,任何时候数组中仅有常数个元素需要存储在数组之外。插入排序和堆排序也属于原址排序。原创 2015-08-27 17:30:28 · 864 阅读 · 1 评论 -
逆波兰表达式求值
二元运算符的表达式定义为:(操作数) + (运算符) + (操作数) ,其中操作数也可以为表达式。 在计算机中,根据运算符所在的不同位置来命名,表达式可以有如下三种不同的表示方法: 记表达式为:Exp = S1 + OP + S2, S1和S2为操作数,OP为运算符。 则称 OP + S1 + S2 为表达式的前缀表示法; 称 S1 + OP + S2 为表达式的中缀表示法;原创 2016-05-19 14:08:12 · 6290 阅读 · 0 评论 -
括号匹配问题
给定一个字符串,其中的字符只包含三种括号:花括号{ }、中括号[ ]、圆括号( ),即它仅由 “( ) [ ] { }” 这六个字符组成。设计算法,判断该字符串是否有效,即字符串中括号是否匹配。括号匹配要求括号必须以正确的顺序配对,如 “{ [ ] ( ) }” 或 “[ ( { } [ ] ) ]” 等为正确的格式,而 “[ ( ] )” 或 “{ [ ( ) }” 或 “( { } ] )原创 2016-04-14 22:17:33 · 19848 阅读 · 1 评论 -
消除集合中的重复元素
给定一个含有重复元素的集合 B,现要消除集合 B 中的重复元素,相同元素只保留一个。也就是说对一个非纯集合 B,构造集合 A 使得集合 A 中只包含集合 B 中所有值不相同的数据元素。我们先看一个和上述问题类似的问题:对于现有的两个集合 A 和 B,求一个新的集合 A = A∪ B,即求两个集合的并集。假设集合 A 和 B 中存放的都是字符元素,要求 A 和 B 的并集,我们可以依次取原创 2016-03-27 22:56:38 · 1746 阅读 · 1 评论 -
字符串最小周期
1. 问题描述给定一个长度为n的字符串S,如果存在一个字符串T,重复若干次T能够得到S,那么,S叫做周期串,T叫做S的一个周期。如:字符串abababab是周期串,abab、ab都是它的周期,其中,ab是它的最小周期。设计一个算法,计算S的最小周期。2. 问题分析首先我们会很容易想到最简单的暴力求解:假设字符串S的长度为 len,S的最小周期的长度为 i ,字符串S表示为S原创 2015-12-04 09:49:25 · 1995 阅读 · 0 评论 -
用返回0~6随机数的函数构造返回0~9随机数的函数
问题:给定一个返回0~6的随机自然数的函数,记为rand6(),则如何用rand6()函数构造返回0~9随机自然数的函数rand9()?对于此问题,首先最容易想到的rand6() + 3、rand6() * 1.5、rand6()*2 - 4 等很明显都是错误的(rand6() + 3将返回的是3~9之间的随机数;rand6() * 1.5对于在返回int型的随机数时某些随机数不能产生原创 2016-01-15 08:19:52 · 4313 阅读 · 2 评论 -
平衡二叉树实现的实例
之前谈过平衡二叉树的实现原理,详见http://blog.csdn.net/wxbmelisky/article/details/47755753,下述实例的实现过程依此为据。现在通过实例来分析平衡二叉树的实现过程,以便更好的理解。选取一组数据分别为2,1,0,3,4,5,6,9,8,7的10个结点来构造平衡二叉树。(1)首先数据为2的结点作为根结点插入,接着插入1,仍是平衡的,再插入原创 2015-08-19 21:11:59 · 14883 阅读 · 6 评论 -
平衡二叉树的实现原理
1.概念平衡二叉树建立在二叉排序树的基础上,目的是使二叉排序树的平均查找长度更小,即让各结点的深度尽可能小,因此,树中每个结点的两棵子树的深度不要偏差太大。平衡二叉树的递归定义:平衡二叉树是一棵二叉树,其可以为空,或满足如下2个性质:①左右子树深度之差的绝对值不大于1。②左右子树都是平衡二叉树。平衡因子的概念:结点的平衡因子 = 结点的左子树深度 — 结点的右子树深度。最低不平衡结原创 2015-08-18 18:08:57 · 17158 阅读 · 1 评论 -
排序算法之冒泡排序
冒泡排序是最基础的排序算法,是一种交换排序。冒泡排序的方法为:对于将被排序的数组 A[1...n],从最左边或者从最右边开始依次比较相邻的两个元素,将大数放在右边,小数放在左边。从最左边开始即首先比较 A[1] 和 A[2],如果A[1] 比 A[2] 大则交换,保证大数在右边;然后比较 A[2] 和 A[3],如果 A[2] 比 A[3] 大则交换;如此继续,直到比较最后两个原创 2016-08-29 15:50:02 · 927 阅读 · 0 评论