目录 一.数据结构 树 1.树的基本概念 2.二叉树 先序遍历 中序遍历 后序遍历 层序遍历 3.二叉查找树 AVL树 二.时间复杂度 举例说明 一.数据结构 树 1.树的基本概念 拥有同一个父结点的结点称为兄弟结点。结点子树的根称为该结点的孩子,同时该结点为孩子的双亲。 结点的度为一个结点所包含子树的数量,而一个树中最大的结点的度就是树的度。 从根节点算起,根节点为第一层,往下递增层,而树的高度...

1. 算法效率的度量 算法执行的时间需通过依据该算法编制程序在计算机上运行时所消耗的时间来度量。而度量一个程序执行时间通常有两种方法。 (1)事后统计法          因为计算机内部都有计时功能,有的甚至精确到毫秒级,不同算法的程序可通过一组或若干组相同的统计数据以辨别优劣。但这种方法有两个缺陷:一是必须先运行依据算法编制的程序;二是所得时间的...

转发:https://blog.csdn.net/LF_2016/article/details/52453212 时间复杂度:   一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),进而分析f(n)随n的变化情况并确定T(n)的数量级。这里用"O"来表示数量级,给出算法的时间复杂度。         &n...

写在前面 计算复杂度 递归函数的时间复杂度 分治法主定理 例题与分析 问题规模减小的递归主定理 循环的时间复杂度 数学基础 例题与分析 参考书籍 写在前面 本系列是记录与总结性质的文章,原创的内容少,记录的内容大都与考研有关。写博客的时间仓促,文中若有错误之处,恳请朋友们批评指正。 计算复杂度 以下内容几乎全部摘自《模式分类》1 为了分析和描述某个问题或为解决为题而设计的某个特定算法的难度,我们转...

算法这条路,是自己目前下定决心去学习,所以,不管遇到多少困难,都希望自己能够坚持下去!还有一年即将面临择业,望付出自己的努力。嘿嘿,不矫情,开始正式的讲解。 —–雷钝 冒泡排序 冒泡排序就是像自然中冒泡的现象一样,把数据排好序。解释如下。 想象有一个直上直下的圆筒,圆筒中装满了水。水中竖直悬浮着大大小小的气泡,圆筒中每个位置有且只有一个气泡。气泡由于浮力的作用,会不断地往上...

/*  *现在有两个有序数组A1、A2,把A2数组插入A1并使新的A1有序  *A1有足够空间  */ 首先解题思想,这个题目的意思是叫你用最低时间来排序,时间复杂度O(n)。那么首先把总长度找出来,我们从最终长度的最后一个开始填入数字,从两个数组的最后一个元素开始比较谁大就把谁放入,放入元素的那个数组下标减1,另外一个数组的下表不变。图示: 上面图示和代码给出的只是...

Analysis of Algorithms 算法性能分析方法 1.Observation观察 使用编程语言实现一个算法,测试其运行时间是一件非常重要的事情。 常用的有以下3中方法(针对Java程序) 方法1:手动测量 直接使用计时器来测量运行时间(估计没有人会接受这种方法) 方法2:使用程序自动测量 在java中Stopwatch类里面有elapsedTime()方法可以测量程序的运行时间。 好...

1.衡量一个算法的好坏: 时间复杂度 & 空间复杂度 时间复杂度—>基本语句关于问题规模n的数学表达式【f(n) = 常数*n^2 + 常数*n + 常数】 空间复杂度—>创建变量个数关于问题规模n的数学表达式 常用 O渐进表示法表示时间复杂度与空间复杂度: O渐进表示法 2.时间复杂度求解方式: 1.求解数学表达式 2.数学表达式有多各项,只保留最高阶...

一、算法的复杂度: 算法的复杂度分为时间复杂度和空间复杂度。 时间复杂度是指衡量算法执行时间的长短; 空间复杂度是指衡量算法所需存储空间的大小。 二、算法时间复杂度 定义:在进行算法分析时候,语句总的执行次数T(n)是关于问题规模n的函数,进而分型T(n)随着n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间度量记作:T(n)=O(f(n)).它表示随着问题规模n的增大,算法执...

引用LeetCode上的一道算法题: 题目: 小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次? 输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。 来源:力扣(LeetCode) 链接:https://le...

目录   基本思想 C++实现 时间复杂度 基本思想 使数组中间隔为d的元素有序。开始时,d选择大一些,每组的元素少,但是组数多。之后不断的缩小d,此时每组的元素变多,而组数变少。当d=1时,只有一个组,所有元素都在这个组中,此时排序完成。 举例 C++实现   时间复杂度        希尔排序中增量的选择会影响时间复杂度,像上面的那种...

完整题目: 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。 【要求】 1. pop(弹栈)、push(入栈)、getMin操作的时间复杂度都是O(1) 2. 设计的栈类型可以使用现成的栈结构 实现思路 1.首先准备两个栈,一个是data栈,一个是min栈 2.第一数入栈的时候,data栈和min栈都插入这个数,后面再有数入栈的时候,data栈正常入栈,入mi...

目录   基本思想 C++实现 时间复杂度 基本思想       桶排序的基本思想是假设数据在[min,max]之间均匀分布,其中min、max分别指数据中的最小值和最大值。那么将区间[min,max]等分成n份,这n个区间便称为n个桶。将数据加入对应的桶中,然后每个桶内单独排序。由于桶之间有大小关系,因此可以从大到小(或从小到大)将桶中元素放入到数组中。 ...

  1. 分析算法时,存在几种可能的考虑: 算法完成工作最少需要多少基本操作,即最优时间复杂度 算法完成工作最多需要多少基本操作,即最坏时间复杂度 算法完成工作平均需要多少基本操作,即平均时间复杂度          对于最优时间复杂度,其价值不大,因为它没有提供什么有用信息,其反映的只是最乐观最理想的情况,没有参考价值。   ...

转:https://blog.csdn.net/mr_garfield__/article/details/78762478 时间复杂度:  一般情况下,算法中基本操作重复的次数就是问题规模n的某个函数f(n),进而分析f(n)随n的变化情况并确定T(n)的数量级。这里用‘o’来表示数量级,给出算法时间复杂度。  T(n)=o(f(n));  ...