
数据结构与算法
TimxYo
这个作者很懒,什么都没留下…
展开
-
数据结构与算法:(4)二叉树的遍历
1、简介二叉树是一种非常重要的数据结构,在许多算法中我们需要使用到二叉树来解决问题。掌握二叉树的遍历对解决后续的算法问题显得非常有必要,常见的二叉树遍历方法分为深度遍历 和 广度遍历 两种。其中深度遍历包含前序、中序、后序三种遍历方法,广度遍历也称为层次遍历。遍历思想:前序遍历:根节点 --->左子树--->右子树中序遍历:左子树--->根节点--->右子树后序遍历:左子树--->右子树--->根节点广度遍历(层次遍历):根节点 --->左子树--->右子树2、实现定义二叉树:publ原创 2020-09-16 19:57:32 · 426 阅读 · 0 评论 -
数据结构与算法:(3)单调栈
1、简介单调栈即满足单调性的栈,在单调栈中,从栈顶到栈底的元素是严格递增或者递减的。单调栈的维护是O(N)O(N)O(N)的时间复杂度的,因为所有的元素只会进栈一次且出栈后再也不会进栈了。单调栈中元素进栈的过程如下:单调递增栈: 假设当前进栈的元素为2,栈中元素从栈顶到栈底依次为[0,1,3,4],从栈顶开始遍历元素,把小于或者等于2的元素弹出栈,直到遇到一个大于2的元素或者栈为空为止,此时再将2压入栈中。单调递减栈: 和单调递增栈一样,不过每次弹出的但是大于或等于2的数。2、例题给定 n原创 2020-09-15 10:26:59 · 169 阅读 · 0 评论 -
数据结构与算法:(2)贪心算法
1. 简介贪心算法在对问题进行求解时,总是做出在当前看来最好的选择,即不从整体最优上加以考虑,而是进行某种意义上的局部最优解。一般将求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好/最优的选择(局部最有利的选择),并以此希望最后堆叠出的结果也是最好/最优的解算法流程:(1)从某个初始解出发;(2)进行迭代,当目标向前进一步时,根据局部最优策略,得到部分解,缩小问题规模;(3)综合所有局部最优解得到最优解;适用范围:贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的原创 2020-09-11 10:27:42 · 152 阅读 · 0 评论 -
数据结构与算法:(1)排序算法
1、冒泡排序时间复杂度:O(n2)O(n^2)O(n2)public static void popSort(int[] array){ if(array==null || array.length<2){ return; } for (int end = array.length-1; end >0 ; end--) { for (int i = 0; i < end; i++) {原创 2020-07-14 12:29:53 · 138 阅读 · 0 评论