随笔分类 - 数据结构
摘要:经典排序算法 – 插入排序Insertion sort经典排序算法 – 插入排序Insertion sort 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,折半插入排序留到“查找”内容中进行。 图1演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。以下代码仅供参考,欢迎指正 /// /// 插入排序 /// /// static void insertion_sort(i...
阅读全文
摘要:冒泡排序,顾名思义就像水中的气泡一样,气泡越大,上浮的越快。以整数数组为例,数值越大的元素我们就认为它越应该出现在数组的右边,这样就构成了一个递增数组。对于含有n个元素的数组values,我们每次从左向右扫描出一个最大的,可以得知,经过n-1次扫描我们即可得到一个有序数组。c++版本:[cpp] view plaincopyprint?#include#include#includevoidbuddle_sort(inta[],intn){for(inti=0;ia[j+1]){inttmp=a[j];a[j]=a[j+1];a[j+1]=tmp;}}voidprint(inta[],intn
阅读全文
摘要:纸上谈兵05 树, 二叉树, 二叉搜索树作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!树的特征和定义树(Tree)是元素的集合。我们先以比较直观的方式介绍树。下面的数据结构是一个树:树有多个节点(node),用以储存元素。每个节点可以有多个子节点(children),而该节点是相应子节点的父节点(parent)。比如说,3,5是6的子节点,6是3,5的父节点;1,8,7是3的子节点, 3是1,8,7的父节点。树有一个没有父节点的节点,称为根节点(root),如图中的6。没有子节点的节点称为叶节点(leaf),比如图中的1,8
阅读全文
摘要:纸上谈兵04 队列 (queue)作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!队列(queue)是又一个简单而常见的数据结构。队列也是有序的元素集合。队列最大的特征是First In, First Out (FIFO,先进先出),这一点与栈(stack)形成有趣的对比。队列在生活中很常见,排队买票、排队等车…… 先到的人先得到服务并离开队列,后来的人加入到队列的最后。队列是比较公平的分配有限资源的方式,可以让队列的人以相似的等待时间获得服务。队列支持两个操作,队首的元素离开队列(dequeue),和新元素加入队尾(enqu
阅读全文
摘要:纸上谈兵03 栈 (stack)作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!栈(stack)是简单的数据结构,但在计算机中使用广泛。它是有序的元素集合。栈最显著的特征是LIFO (Last In, First Out, 后进先出)。当我们往箱子里存放一叠书时,先存放的书在箱子下面,我们必须将后存放的书取出来,才能看到和拿出早先存放的书。 栈中的每个元素称为一个frame。而最上层元素称为top frame。栈只支持三个操作, pop, top, push。pop取出栈中最上层元素(8),栈的最上层元素变为早先进入的元素(9
阅读全文
摘要:二叉树及二叉树的遍历二叉树(binary tree)二叉树的定义 二叉树的定义:树的度为2的树。 二叉树的递归定义:二叉树或者是一棵空树,或者是一棵由一个根结点和两棵互不相交的左子树和右子树所组成的非空树,而左右子树又都是一棵二叉树。二叉树的性质 1.第i层上至多有2的i-1次方个结点。 2.深度为h的二叉树至多有2的h次方减1个结点。 3.每一层都满的二叉树称为满二叉树,只在最后一层右边缺若干个结点的树称为完全二叉树。 (对结点的编号通常都是从满二叉树的树根开始,从上到下从左到右编号)。 完全二叉树的重要性质: 根结点序号为i=1的情况下: 1.编号为i的结点,左孩子编号为...
阅读全文

浙公网安备 33010602011771号