![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 76
码拉松
这个作者很懒,什么都没留下…
展开
-
数据结构与算法---栈的应用
栈的定义栈是一种先进后出的线性结构,只允许从一端进出,这是栈的特点,所以在针对先进后出的场景中,使用栈去实现就非常简单。如何实现一个栈栈可以使用数组来实现,主要包含进栈和出栈两个基本方法,在Java中为我们提供的Stack类,就是最基本的栈结构。publicclass Stack<E> extends Vector<E> { /** * Creates an empty Stack. */ public Stack() { }原创 2021-10-21 09:00:00 · 370 阅读 · 0 评论 -
数据结构与算法---堆的应用场景
前言前面的文章中介绍了关于数据结构与算法—堆的基本操作,本篇文章中我们再来看看堆的应用场景。应用场景一:优先级队列我们知道队列的特性就是先进先出,而优先级队列则是按照某种优先级来的,优先级高的先出,Java中的PriorityQueue就是典型的优先级队列实现,优先级队列通常就是用堆来实现。应用场景二:求Top K找出数组中的最大的前K个数,或者最小的前K个数,我们可以利用大顶堆或者小顶堆来完成。求数组中最小的K个数 public int[] smallestK(int[] arr, i原创 2021-10-09 08:48:24 · 945 阅读 · 0 评论 -
数据结构与算法---堆的基本操作
堆的定义堆可以看做是一种特殊的树,堆结构满足两个条件:1、堆是一个完全二叉树。2、堆的每一个节点的值都大于等于(或小于等于)其子节点的值。大于等于子节点的值我们叫它:大顶堆小于等于子节点的值我们叫它:小顶堆实例:大顶堆不满足完全二叉树定义,不是一个堆小顶堆堆的构建1、向堆中添加一个元素我们知道堆是一种完全二叉树,所以我们就可以直接用数组来表示堆的结构,直接通过数组的下标就能够定位到树的任意位置,这是一种即高效又节省空间的选择。举个例子:数组下标中:对于第i位置的元素来说,原创 2021-10-09 08:46:58 · 2158 阅读 · 0 评论