
数据结构
3wtczs93点抗母
这个作者很懒,什么都没留下…
展开
-
算法--排序总结篇
样例 [1,5,3,6,7,3,9,10,2],以下都是以从小到大排序1.冒泡排序思想:从数组上第0位开始,和第1位比较,比第一位大则交换值,然后第1位和第2位比较,大则交换,依次类推到n-1和n比较,通过不断的比较相邻的位置上的,大的值不断往后交换,最后最大的值被交换到数组最后的位置,这就完成了第一趟。第二趟还是从第0位开始,但结束位置是n-2和n-1比较,n的位置已经确定最大了,不需要比较了。依次类推完成n-1趟。时间复杂度: O(n^2)public Integer[] sor...原创 2020-12-10 16:57:27 · 107 阅读 · 0 评论 -
手写数据结构之优先有序队列
前面我用堆写了一个优先队列,可以保证优先级高的先执行,但不能保证同等优先级的有序。java JDK的PriorityBlockingQueue也是用堆实现的优先队列。场景:如果有1~9个会员等级进行排队购买,首先保证高等级的进行优先购买,同等级的有序排队。那么这个场景采用普通的优先队列就不能满足了。理论方案:靠普通堆是实现不了的,除非你在构建堆的时候进行额外处理,强行保证它同等级的有序,那这个还不如写排序来的实在。还是以堆数据结构作为基础,实现优先功能,接下来就是要保证同等级别的有序了,这个功能交给原创 2020-11-03 15:12:48 · 220 阅读 · 0 评论 -
手写数据结构二叉堆
package com.tczs.heap;import java.util.Arrays;import java.util.Comparator;public class BinaryHeap<T> { private Object[] array; private int capacity = 16; private int length; private int index; private Comparator<? super .原创 2020-10-25 00:19:28 · 240 阅读 · 0 评论 -
手写数据结构之红黑树
红黑树的作用:前面我写了一个普通查找二叉树,普通查找二叉树有一个弊端,就是可能会有极坏的情况(节点一边倒,分布不完全)。那么红黑树就是一种特殊的查找二叉树,能让节点尽可能完全分布的情况。红黑树的定义:红黑树是具有以下着色性质的二叉查找树:1.每一个节点不是黑色就是红色2.根是黑色3.如果一个节点是红色的,那么它的子节点必须是黑色的4.任意一个节点到每一个叶子节点的路径都有相同数目的黑色节点(任意节点不好理解,理解成根节点就好了)备注:看完定义可能会一脸蒙圈,如果已经熟悉了二叉原创 2020-10-18 23:59:42 · 302 阅读 · 0 评论 -
手写数据结构之普通查找二叉树
前段时间去面试,不是算法就是源码,被问到崩溃,这是今年程序员多了,还是我要个22k以上的工资必问条件了。算法还好吧,状态好还能写两个简单的,源码说实话我都不主动去看了,都是系统出问题了我再来以这个为切入点去看看。面试机会很多,但结果都是等通知或者薪资压榨太多,不上班就不上班把,再怎么也不能走倒退路。哪里不会就学哪里吧,没有撤退可言。查找二叉树的定义:所有的左子树都比节点小,所有的右子树都比节点大。(数据结构与算法分析上定义的,其实反过来定义也可以吧,左子树大右子树小)示例图:可以看到查找原创 2020-10-06 16:01:22 · 263 阅读 · 0 评论 -
堆和堆的应用:堆排序和优先队列
2018/01/28 · IT技术 · 数据结构, 算法 原文出处: Spground 1.堆堆(Heap))是一种重要的数据结构,是实现优先队列(Priority Queues)首选的数据结构。由于堆有很多种变体,包括二项式堆、斐波那契堆等,但是这里只考虑最常见的就是二叉...转载 2018-04-18 16:25:05 · 272 阅读 · 0 评论