![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java数据结构与算法分析
爱上猫de鱼
情商修炼中......
展开
-
冒泡排序和选择排序的简单使用
这里主要介绍一下冒泡排序和选择排序的简单使用,给初学者一些参考,可能和别人的有点不一样,这主要是我自己的一些思路,和别人是有一些出入的。 直接上代码,注释在代码中:package com.Jevin.chapter01;/** * 这里介绍一下冒泡和选择排序: */public class Sort { public static void main(Str...原创 2018-05-12 14:17:21 · 169 阅读 · 0 评论 -
Java排序算法之插入排序
最近接触了插入排序算法,查了一些资料,写一些自己的理解吧。这种排序方式感觉有些像选择排序法,选择排序法是将当前元素与之后的所有元素逐一比较,从而找出最大或最小值,而插入排序时将当前元素与之前元素逐一比较,从而找到该元素合适的位置。下面看一个例子吧: 例如:将一组数【14,2,21,36,19】按插入排序。 第一趟:从第二个元素2开始,2比14小,交换位...原创 2018-11-29 16:53:23 · 116 阅读 · 0 评论 -
Java排序算法之希尔排序
这几天看了一点希尔排序,据说它是插入排序的优化,但是我愣是没看出来到底优化在什么地方,从原理上分析,希尔排序也就是将一组数按照一定的方式切分成不同的组,然后各个组进行插入排序,说到底,底层还是插入排序。 我们先看看它的原理:将一组含n个元素的数,不停的除以2取“间隔数”,然后隔着间隔数取数成组,在对这个组进行插入排序,直到这个间隔数为1为止,也就是对整体数组进行插入排序,...原创 2018-12-03 14:36:03 · 307 阅读 · 0 评论 -
Java算法之归并排序
这里我们说说归并排序,其最坏的时间维度是O(NlogN),其思想是利用了“分治法”。 所谓的“分治法”即为:当一个大问题难以解决时,我们将其分为若干个小问题,然后将这些小问题解决了,那么大问题也就顺利解决了。那么怎么将其具体于排序上面呢?分两步:(1)拆分;(2)合并。 (1)拆分 当一组数据没法排序时,我们将其一分为二,发现他的一半还...原创 2018-12-13 17:24:31 · 120 阅读 · 0 评论 -
Java排序算法之堆排序
“堆排序”是利用堆这种数据结构而设计的一种排序算法(注意这里和堆内存的区别,二者不同),它是一种选择排序,其平均时间复杂度是O(NlogN)。 这里介绍一下“堆”这种数据结构,它是一种完全二叉树,也就是说除叶子节点外,其余节点全部是满数据的。如下所示,就不是完全二叉树,因为树枝节点不满:如下所示,就是完全二叉树,因为树枝节点满的: 堆的数据结构分为...原创 2018-12-06 20:22:53 · 755 阅读 · 0 评论 -
Java排序算法之快速排序
快速排序,顾名思义,速度快;其时间复杂度为(NlogN),那么它是如何运作来实现高速排序的呢?先讲一下它的基本原理: (1)寻找到一个枢纽元,也就是在一组元素中找一个元素(怎么找是有讲究的); (2)然后在这组元素中,比这个枢纽元小的放在左边,比其大的放在右边; (3)然后对左右重复上述两步,即可实现从小到大排序; ...原创 2018-12-17 17:46:35 · 19303 阅读 · 13 评论