数据结构与算法
文章平均质量分 66
淡定-ing
做人要淡定
展开
-
数据结构与算法之算法基础公式
数据结构与算法顾名思义包含数据的基本结构和算法分析。开始学习数据结构与算法,但是高等数学已经忘得差不多了。在这里,先把需要复习的高等数学公式在这里记录下。指数指数:是幂运算aⁿ(a≠0)中的一个参数,a为底数,n为指数,指数位于底数的右上角。当n=0时,。指数的常用公式:对数对数是指以幂为自变量,指数为因变量,底数为常量的函数。例:如果ax=N(a>0,且a≠1),那么数x叫做以a为底N的对...原创 2018-05-13 18:27:18 · 1665 阅读 · 4 评论 -
数据结构与算法之表、栈、队列
1、表这里指的表是形如A0、A1......An的一般的表。将大小为0的特殊表称为空表。除空表外的任何表,我们说Ai后继Ai-1并称Ai-1前驱Ai。表的简单数组实现设定数组的初始长度为10:int [] arr = new int[10];扩展数组:int [] new Arr = new int(arr.length*2);许多情况下,数组是表的合适实现,特别是在数组插入后很少修改,查询比较...原创 2018-05-20 17:26:28 · 137 阅读 · 0 评论 -
算法优化之计算最大子序列的和问题
问题:给定(可能有负的)整数A1,A2,A3.........An,求子序列的最大值。(为了方便起见,如果所有整数均为负数,则最大子序列的和为0)解释下题目:子序列为连续的序列,比如有2,-1,4,3,5,-2,7,4,-8;子序列-1,4,3,5的和为11.则最大子序列为2,-1,4,3,5,-2,7,4.这个问题有很多种解法,下面列举几种:for循环穷举所有的可能public static i...原创 2018-05-14 23:43:53 · 297 阅读 · 1 评论 -
散列
散列散列常指散列表的实现。散列是一种用于以常数平均时间执行插入、删除和查找的技术。 如果对于一个表,当一个元素被插入时与一个已经存插入的元素散列到相同的值,那么久产生一个冲突,解决这个冲突的算法有好多种,下面讨论最简单的两种:分离链表法和开放定址法。分离链表法分离链表法的通常解决方法是将散列到同一个值得所有元素保留到一个表中。 如图,对于10个长度的表,使用数据的大小对10...原创 2018-06-02 22:55:49 · 518 阅读 · 0 评论 -
数据结构与算法之树(一)
树是一些节点的集合。这些集合可以是空集,如果不是空集,那么树则由称作根的节点r以及0个或多个非空的树T1、T2.....Tk组成。如图没有儿子的节点称为树叶;具有相同父亲的节点称为兄弟;深度:对于任意的节点ni,从根到ni的唯一路径的长。高:从ni到一片树叶的最长路径的长。...原创 2018-05-27 22:23:38 · 1981 阅读 · 0 评论 -
数据结构与算法之树(二)
这里接上前面树的第一篇,记录下其他的树。带有平衡条件的二叉查找树AVL(Adelson-Velskii 和Landis)树是带有平衡条件的二叉查找树。 平衡二叉树的特点:任何节点的两个子树的最大高度差为1;查找、删除、插入在平均和最坏情况下都是o(log n); 如图。上面就是符合条件的二叉平衡树。二叉平衡树之旋转二叉平衡树在执行插入操作过程中如果破坏了原...原创 2018-06-02 15:36:33 · 599 阅读 · 0 评论 -
排序算法之堆排序
基于堆的数据结构,形成了一种堆的排序算法,叫做堆排序。堆排序总的运行时间是。这个算法的主要问题在于使用了一个附加的数组,存储需求增加了一倍,因此这里采用一种回避的算法:在每次deletemin后堆缩小1,位于堆中的最后的单元可以用来存放刚刚删除的元素。算法的主要逻辑思路:1、创建堆数据结构;2、删除位于根最小值(或者最大值);3、重新构造堆的结构;4、重复2和3的操作,直到...原创 2018-09-04 23:22:21 · 117 阅读 · 0 评论 -
数据结构之堆
堆堆的定义:堆是计算机中一种特殊的数据结构的统称,通常是一个可以看做一棵树的数组对象。堆总是满足下列性质:堆中某个节点的值总是总大于或者不小于其父节点的值; 堆总是一颗完全二叉树。将根节点最大的堆叫做最大堆或者大根堆,根节点最小的堆叫做最小堆或者小根堆。常见的堆有二叉堆,斐波那契堆。二叉堆二叉堆是一种特殊的堆,二叉堆是完全二叉树或者近似完全二叉堆。二叉堆有两种:最大堆和最小堆。...原创 2018-09-02 21:24:41 · 164 阅读 · 0 评论 -
数据结构与算法之快速排序
快速排序顾名思义,在大部分情况下都能快速的将数据进行排序。百度百科快速排序的定义:通过一趟排序将要排序的数据分成独立的两部分,其中一部分的数据比另一部分的所有数据都要小,然后再按照这个方法对这两部分进行快速排序,排序以递归进行,从而达到将整个数据变成有序序列。快速排序的平均运行时间是O(N log N)。从快速快速的定义可知,排序是将数据分成两部分,因此选择切分数据的中数非常重要,否则两部分的...原创 2018-09-16 12:05:28 · 133 阅读 · 0 评论