![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Lucky6991
这个作者很懒,什么都没留下…
展开
-
基本排序算法
1 ,冒泡排序算法多的不说,直接上代码,分析和说明都有注释import java.util.Arrays;/* * 冒泡排序算法 * 算法简要说明: * 例如有一个无序数组{10,23,1,8} * 1,先从数组的第一个位置开始,与他的下一个数字进行比较,如果后边的数字比他小,则交换位置,否则,下标+1 * 2, 每一次排序,都会选出当前数组最大的数字,放到排序数组的最后一位 *...原创 2018-04-26 11:22:08 · 191 阅读 · 0 评论 -
day07 堆的插入和删除操作实现
目录前言堆的插入操作:代码实现:堆的删除操作:代码实现:完整代码实现:前言 昨天学习了优先队列的基本概念,以及学习了堆的概念以及堆的基本实现。那么我们如何通过堆来完成优先队列最重要的两种操作呢?今天我们就来学习一下优先队列的两种重要操作:出队和入队堆的插入操作: 堆是一种完全二叉树,所以我们在插入的时候,直接把元素插入...原创 2019-08-06 09:59:23 · 185 阅读 · 0 评论 -
day05 插入,归并,快速,选择排序算法总结
前面几天在学习基础的排序算法,从O(n²)级别到O(n)级别的算法,今天就不学习新的排序算法了,停下来把之前学习的进行巩固一下,并且好好分析一下这几种算法之间的区别,以及他们分别适用于什么样的情景。1,选择排序1.1 排序思想选择排序的思想正如它的名字,重点就在选择。怎么个选择法呢?选择排序会从当前数组中,每次选出一个最小的数字放在最前方。第一次遍历选择出一个最小的,第...原创 2019-08-06 10:07:47 · 286 阅读 · 0 评论 -
算法Day02 插入排序及进阶
Day01的时候进行了选择排序的原理和实现,选择排序有两层循环,属属于平方级别的算法,今天我们要学习的同样是平方级别的基础排序算法--插入排序,但是和之前的选择排序不同的是,插入排序如果进行相应的优化,那么他的时间效率在某些情况下是属于O(n)级别的,至于在何种情况下,后边再细说。同时,插入排序也引升出了另外一个非常常用的排序算法,希尔排序,今天我们就只学习插入排序,感兴趣的小伙伴自行研究。...原创 2019-07-28 14:12:40 · 204 阅读 · 2 评论 -
day07 原地堆排序
前言前面我们学习了堆排序的两种实现方式,不知道大家还记不记得。我们之前学习的堆排序都是通过把一个无序的数组复制到堆中,然后进行排序,但是这样一来,我们就需要开辟额外的存储空间去存储。那么我们今天就来学习如何去解决这个问题,然后对堆排序进行优化。思想:其实我们可以的数组本身就是一个堆,只不过并不是一个最大堆,那么通过之前的学习我们可以通过shitDown操作去把数组变成一个最大堆,这个操...原创 2019-08-08 09:19:05 · 319 阅读 · 0 评论 -
算法Day05 快速排序优化之三路快排
从前天开始,学习了快速排序,快速排序是一门很优秀也经常会被用到的排序,所以昨天我们学习了快速排序的进阶版本,双路快排,但是除此之外,还能进行再度的优化,这就是我们今天要学习的,三路快排What?三路?刚刚昨天学习了双路,怎么又蹦出个三路来了?这到底有多少路?说实在话,昨天我学到这个的时候也是懵逼的,但是经过学习之后,我发现,其实三路和双路都是差不多的,双路排序是两个索引,那么显而易见,三路...原创 2019-08-01 11:13:30 · 169 阅读 · 0 评论 -
day06 堆排序之堆的基本实现
目录1,优先队列的概念2,为什么要执行优先队列?3,预先队列的主要操作4,如何实现优先队列5,用堆实现优先队列6,堆的基本存储什么是二叉树?什么是完全二叉树?7,使用数组实现二叉堆8,堆的基本代码实现。1,优先队列的概念 队列的概念相信大家都有接触过,先进先出,后进后出,这个规则相信大家都不陌生,这是普通队列的出入规则,但是什么是优先...原创 2019-08-05 09:33:31 · 137 阅读 · 0 评论 -
算法Day04 快速排序优化之随机双向快排
昨天学习了快速排序,回顾一下,快速排序的做法就是一次排序将一个数放到正确的位置上,并返回当前位置的索引,然后避开此位置,对其他位置进行重复的排序,有点像前边学到的归并排序,不知道大家有没有印象。归并排序和快速排序的思想都是递归分割,然后对分割出来的区域进行排序,但是有一个不同的地方就是,归并排序每次分割都会平均分成二等分,但是快速排序却十分的不稳定,最理想的情况就是能和归并排序一样,找到一个中...原创 2019-07-31 20:50:07 · 410 阅读 · 0 评论 -
算法Day03 快速排序 重点
今天是算法学习的第三天,这几天太忙,没有学的太多,昨天花了时间去把排序算法的基础实现弄懂,今天抽个时间来把博客写了。前几天学了选择排序,插入排序,归并排序,今天来学习一门O(n)级别的算法,也是现在最重要的基础排序算法之一,快速排序。这是一门十分重要的排序算法,这是公认的最伟大的排序算法之一,为什么会中这么说,因为他在效率方面提升了提多,相比于前面提到的几种排序算法,到底提升了多少,...原创 2019-07-30 18:58:10 · 151 阅读 · 0 评论 -
算法Day01-选择排序
今天是算法学习的第一天,加油!!!今天学习的算法是最基础的,选择排序算法,他是一个n的二次方复杂度的算法,在效率和耗时上可能比不上其他的高级算法,但是有时候在不考虑资源消耗的情况下,使用基础的排序算法,能更快的解决问题,好了,废话不多说,开始吧首先说一下选择排序算法的思想:有一个无序的数组,每次从第一个数开始,用它去和它后边的数一次比较,设计一个变量min_index用来记录最...原创 2019-07-24 00:07:57 · 152 阅读 · 0 评论 -
剑指Offer算法-判断是否平衡二叉树
题目要求:输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路分析: 平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质: 1,它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1。 2,并且左右两个子树都是一棵平衡二叉树。 平衡二...原创 2019-04-01 15:21:07 · 215 阅读 · 0 评论 -
剑指Offer算法-求二叉树深度
题目如下:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:二叉树的深度计算,首先要判断节点,以下是计算二叉树的详细步骤:1、一颗树只有一个节点,它的深度是1;2、二叉树的根节点只有左子树而没有右子树,那么可以判断,二叉树的深度应该是其左子树的深度加1;3、二叉树的根节点只有右子树而没有左子树...原创 2019-04-01 15:02:50 · 721 阅读 · 0 评论 -
day07 堆排序的基本实现
前言我们已经学习了堆的插入和删除操作,下面我们来学习一下堆排序其实堆排序很简单,主要有两种实现方法:方法一:将元素依次插入到堆中,然后输出堆,此时输出的元素都是有序的。这种方法利用的是堆的特性,因为非常简单,我就不进行代码展示了。方法二:将一个数据源数组传给堆,堆在初始化的时候会把数组的元素依次复制到堆内部数组中,但是注意,此时堆的数据是无需的,那么如何排序呢?...原创 2019-08-06 15:55:40 · 191 阅读 · 0 评论