数据结构与算法
fishwinwin
这个作者很懒,什么都没留下…
展开
-
搞定《数据结构》(1)
这是第三遍系统的回顾《数据结构》了,希望能把学习的感受记录下来,方便后续深入学习。第一章 绪论1.1 数据结构三要素首先,从数据结构的三要素说起,如下图所示:(一)逻辑结构: 逻辑结构是指元素之间的逻辑关系,与数据的存储无关,是独立与计算机的。分为线性结构和非线性结构。线性结构:元素之间1对1关系树形结构:元素之间1对多关系图结构:元素之间多对多关系至于具体...原创 2018-07-22 16:00:51 · 516 阅读 · 0 评论 -
【数据结构与算法】关于滑动窗口
写在前面:这里主要是说数组or字符串问题里边经常会用到的“滑动窗口”,不是网络里边那个(那个其实我也有总结过,不过没整理成博客,等看到那块的时候来写)。什么是滑动窗口?画个图先直观的形成一个印象:有了印象之后,滑动窗口经常用来解决子串的问题,从图上也能看出来,就是设置一个区间,然后在这个字符串or数组上滑动。有了是什么之后,那我们就看看为什么。为什么要用滑动窗口假...原创 2019-07-16 14:42:01 · 489 阅读 · 0 评论 -
【数据结构与算法】关于排序(上)
写在前面:今天主要讨论时间复杂度为O()的排序算法。选择排序 插入排序 冒泡排序 希尔排序1.选择排序一句话搞懂选择排序:每次遍历都选择一个最小的元素放在当前位置。ps:至于最小还是最大,看你需要按什么序排列了。public static void sort(int[] arr){ int n = arr.length; for( in...原创 2019-09-01 17:32:48 · 135 阅读 · 0 评论 -
【数据结构与算法】关于排序(中)
写在前面:今天主要讨论时间复杂度为O()的排序算法。归并排序 快排 堆排序1.归并排序是一种分治的思想,先自顶向下划分,然后再将已排序的部分合并。时间复杂度O(nlogn)空间复杂度O(n),用了辅助空间。 public void mergeSort(int[] arr){ sort(arr,0,arr.length-1); } publ...原创 2019-09-01 22:36:29 · 145 阅读 · 0 评论 -
【数据结构与算法】二叉树的遍历
写在前面:今天主要讨论二叉树遍历层序遍历 前序遍历 中序遍历 后序遍历这些方法的时间复杂度都是O(n),因为它们只访问每个节点一次。空间复杂度为O(n)。1.层序遍历对于这样一颗二叉树,层序遍历的结果为:1,2,3,4,5,6,7 static class TreeNode{ int val; TreeNode left; ...原创 2019-09-02 11:38:01 · 198 阅读 · 0 评论 -
【数据结构与算法】关于排序(下)
写在前面:今天主要讨论时间复杂度为O(n)的排序算法。计数排序 桶排序 基数排序1.计数排序算法分析:基于分布的排序要找到待排序数组中最大和最小的元素,辅助count数组,这里的意义是用来记录相对顺序下每个元素出现了多少次。举个例子就能解释明白:step1找最大最小是为了确定统计的区间。nums={2,3,1,4,6,4,3,5,3,2},在step2计数完成后,count=...原创 2019-09-03 15:58:09 · 150 阅读 · 0 评论