数据结构笔记
文章平均质量分 92
瞎胡侃
这个作者很懒,什么都没留下…
展开
-
数据结构-堆
堆的介绍 堆是具有以下特定的二叉树: 它是完全二叉树。即除了树的最后一层节点不需要是满的,其他的每一层从左到右都完全是满的。它常常用一个数组实现。堆中的每一个节点都满足堆的条件,即每一个节点的关键字都大于(或等于)这个节点的子节点的关键字。 弱序 堆和二叉搜索树相比是弱序的,在二叉搜索树中所有节点的左子节点的关键字都小于右子节点的关键字。 而对于堆来说,只要求沿着根到原创 2016-11-07 17:17:09 · 1392 阅读 · 0 评论 -
数据结构-二叉树
树是由边连接的节点而构成的。 每个节点最多有两个子节点的称为二叉树,而多于两个子节点的称为多路树。 由于树通常结合了有序数组和链表两种数据结构,所以在查找数据项项时和有序数据一样快,而插入、删除数据项则和链表一样快。 树的查找、插入、删除的时间复杂度为O(logN)。原创 2016-10-24 14:59:13 · 1363 阅读 · 0 评论 -
数据结构-图
在数据结构上,图和树是比较相像的。实际上,树可以说是图的一种。 图包含由边连接的顶点。原创 2016-11-10 11:57:06 · 1534 阅读 · 0 评论 -
数据结构-高级排序
高级排序算法:希尔排序和快速排序。 其执行效率分别为希尔排序的O(N*(logN)^2)和快速排序的O(N*logN)。 归并排序相较于简单排序中冒泡排序、选择排序和插入排序的执行速度要快,但是需要原始数据空间的两倍。而希尔排序和快速排序不需要大量的辅助空间。原创 2016-10-20 10:22:38 · 1300 阅读 · 0 评论 -
数据结构-递归
递归的特征 调用自身当它调用自身的时候,是为了解决更小的问题(即缩小问题的范围)存在某个足够简单的问题的层次,在这一层算法不需要调用自己就可以直接解答,则返回结果(即基值情况,否则会无限调用下去) 基值情况 导致递归的方法返回而没有再一次进行递归调用,此时称为基值情况。 每个递归方法都必须有一个基值(终止)条件,以防止无限的递归下去,以及由此引发的程序崩溃。原创 2016-10-17 10:07:08 · 1244 阅读 · 0 评论 -
数据结构-链表
链表包含多个Link对象(即链接点),相对数组,链表更为灵活 链表通常包含用来指向第一个链接点的引用first,若还包含一个指向结尾的引用last则为双端链表 每个链接点Link对象都包含一个指向下一链接点的引用next,若还包含一个指向前一链接点的引用previous则为双向链表 在链表的头部插入链接点需要把新链接点的next指向原first链接点,然后把first指向新链接点 在链表的头部删除链接点需要把first指向first的next 在链表特定位置插入新的链接点,需要改变对应的前后链接点内应用指向原创 2016-10-12 10:40:42 · 1384 阅读 · 0 评论 -
数据结构-队列
队列可以使用数组或链表来实现,至于什么时候应该使用链表还是数组来实现,取决于是否能够精确的预测队列的大小。如果不确定,则链表会比数组有更好的适应性。原创 2016-10-09 09:36:32 · 1016 阅读 · 0 评论 -
数据结构-栈-计算后缀表达式
将中缀表达式转为后缀表达式后,利用栈来计算后缀表达式的结果原创 2016-09-29 10:32:39 · 678 阅读 · 0 评论 -
数据结构-栈-中缀表达式转后缀表达式
利用栈(stack),将中缀表达式转为后缀表达式,以便于计算。原创 2016-09-28 18:25:05 · 671 阅读 · 0 评论 -
数据结构-简单排序
在数据结构中,简单的排序为冒泡排序、选择排序、插入排序,虽然时间复杂度都为(O(N^2)),但是插入排序在基本有序的条件下为(O(N)),所以一般插入排序会和快速排序结合使用原创 2016-09-27 13:40:45 · 511 阅读 · 0 评论 -
数据结构-带权图
带权图的最小生成树 规则:总是选择权值最低的边。 带权图的最小生成树中有所有的顶点和连接它们的必要的边,且这些边的权值最小。 算法要点 从一个顶点开始,把它放入树的集合中。以下是步骤: 找到从最新的顶点到其他顶点的所有边,这些顶点不能在树的集合中。把这些边放入优先级队列。找出权值最小的边,把它和它所到达的顶点放入树的集合中。 重复以上步骤,直到所有顶点都在树的集合中。 J原创 2016-11-16 13:58:44 · 2917 阅读 · 0 评论