
数据结构
素年恋锦事
嵌入式,Java
展开
-
数据结构—基数排序学习笔记
数据结构—基数排序学习笔记应用场景算法原理复杂度代码 应用场景 针对数据范围过大(对手机号进行排序),数据不是整型(比如是字符串)的这些特点,计数排序难以进行简单的处理,但可以通过基数排序解决。 算法原理 这里我们举出身高的例子(手机号的例子实在太长了): 请为一组身高进行排序: 192 168 131 147 145 189 177 142 172 203 首先我们观察到,对于待排序的数据,其在不同位上数字的权重是不一样的(百位>十位>个位),百位上大的数值一定比十位上大的数值来得大。 2?原创 2020-09-30 18:05:35 · 167 阅读 · 0 评论 -
数据结构—计数排序学习笔记
数据结构—计数排序学习笔记应用场景算法原理复杂度代码实现 应用场景 对数值范围小,且都是整型的数列进行排序,并且有严格的时间复杂度要求(小于O(n * logn)),常使用计数排序。 比如我有10亿个数,但这些数都是位于0到10的整型数据,要求时间复杂度严格小于O(n * logn)。 算法原理 首先我们查看适合计数排序的数据特点: ①数据量没有限制,但数值都集中在很小的范围内,比如0~100; ②数据类型必须要是整型的,结合特点①即数据取值只有很少的整形范围。 假定有20个待排序数列: 9,3,5,4,9原创 2020-09-30 10:35:40 · 191 阅读 · 0 评论 -
数据结构—桶排序学习笔记
数据结构—桶排序学习笔记应用场景算法原理代码 应用场景 数列取值范围过大,或者不为整数时,不再适用计数排序,升级为桶排序来进行排序。 题型:大数据时代:本月某网站播放数量前十的视频,视频数量又多、播放次数差别又大,非常适合桶排序。 算法原理 类别于计数排序中计数数组的某一个元素,桶排序中的每一个桶代表了一个区间范围,里面可以承载一个或多个元素。桶排序的第一步就是创建这些桶,并确定每一个桶的区间范围。 举例:2.2,0.5,5.5,4.24,0.54,3.36 具体创建多少个桶,如何确定桶的区间范围,有很原创 2020-09-30 08:09:31 · 266 阅读 · 0 评论 -
数据结构—排序算法复习
排序算法复习冒泡排序 排序是我们生活中时常会遇到的问题:上体育课会按照从高到低的顺序排列;高考录取会按照分数依次排名。 拓展到广义的定义,排序就是:现有 n 个数据 a1, a2, a3, … an ,其具有一个可进行比较的属性 y ,现在需要找到 n 个数据的一种排列 {p1, p2, … pn} ,使其属性 y1 ≤ y2 ≤ … ≤ yn。这样的操作就是排序。 常见的排序方法有: 冒泡排序 、 简单选择排序 、 直接插入排序 、 希尔排序 、 堆排序 、归并排序 、快速排序 等。 由于排序涉及大量的交原创 2020-09-19 16:11:40 · 865 阅读 · 0 评论 -
java非递归实现二叉树遍历
非递归实现二叉树遍历前序遍历:中序遍历后序遍历 前序遍历: public List<Integer> preOrder(TreeNode root){ List<Integer> preret = new LinkedList<>(); if(root==null) return preret; Stack<TreeNode> stack = new Stack<>(); while (!stack.原创 2020-09-16 21:34:44 · 162 阅读 · 0 评论