
其他算法
ccmedu
这个作者很懒,什么都没留下…
展开
-
冒泡排序的优化
自己整理不算转发也不算原创原始的冒泡排序算法的每一轮要遍历所有的元素,轮转次数和元素数量相当,时间复杂度是O(N^2)1)原始的冒泡排序就算排序几轮过后后半部分已经有序,原机制还是会从头一直继续执行,执行无用功。 所以优化办法之一就是判断数组是否已经有序,并且做出标记,剩下几轮就不必在执行。进行了交换说明无序,没有进行交换则说明有序。 public class T...原创 2019-04-23 22:43:38 · 212 阅读 · 0 评论 -
java希尔排序
1、概念希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位2、原理希尔排序是一种分组插入方法,组长度为数组长度的一半,将相同距离的放入一组,进行插入...原创 2019-06-05 00:33:45 · 186 阅读 · 0 评论 -
java桶排序
一、原理 桶排序的工作原理是把[0,1)区间划分为n个大小相同的子区间,这样的区间称为桶。然后将n个输入的数分发到各个桶中去。每个桶再个别的排序,然后按照次序把各个桶。二、代码方法一计数法:计数排序需要占用大量空间,它仅适用于数据比较集中的情况。思想是:开辟和待排序数组最大值长度+1长度的计数数组,数组有多长,桶就有多少个,将相同的放到同一个桶里面。把 arr[i] 放到它输...原创 2019-05-30 01:16:25 · 1179 阅读 · 0 评论 -
Java求两个自然数的最大公约数
1、递减法,时间复杂度有点高:o(n)public class Maximum { public static void main(String[] args) { System.out.println("result:"+getCommonNum(13, 11)); // System.out.println("resul...原创 2019-05-13 00:39:12 · 860 阅读 · 0 评论 -
Java堆排序(大顶堆小顶堆及应用实例)
自己理解所得,如有错误欢迎随时指摘;目录:堆概念 堆结构 堆排序步骤 大顶堆代码、小顶堆代码 实际应用及实例代码 小顶堆删除图解代码、插入代码 小顶堆插入图解 时间复杂度分析1、百度-》概念:堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大顶堆和小顶堆,是完全二叉树。(任何一个子节点...原创 2019-05-16 00:12:16 · 10329 阅读 · 1 评论 -
快速排序 归并排序 Collections.sort正序倒序乱序性能分析
一、快速排序:1:快速排序性能测试,随机数10000个打乱排序乱序、正序、倒序写法如下public class QuickSort { //第一步 public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for...原创 2019-05-06 00:26:38 · 3035 阅读 · 0 评论 -
二叉树笔记
二叉树:树的每个节点最多只能有两个子节点二叉搜索树:树形结构,且该树每个结点最多只能有两个叶子节点,二叉树的子节点称为“左子节点”和“右子节点”。并且节点左边每个值均小于节点,节点右边的每个值都大于节点。遍历方式有三种,都是相对于跟节点的位置来说的; 前序遍历:根节点-左子树-右子树 中序遍历:左子树-根节点-右子树 ...原创 2019-04-29 00:21:07 · 168 阅读 · 0 评论 -
选择排序Java
各种视频,各种文章上查阅后整理分享。站在巨人的肩膀上摘苹果。1原理:选择排序和冒泡很像,主要思想就是从一个数组中找到最小的与数组第一位进行交换(最小的不是他自己,是他自己就忽略掉),从第二位开始遍历,选出最小的元素与第二个元素交换,依次类推。2时间复杂度:O(n^2),3代码实现public class SelectSort { public static void mai...原创 2019-04-27 01:27:07 · 183 阅读 · 0 评论 -
快速排序Java
各种视频,各种文章上查阅后整理分享。站在巨人的肩膀上摘苹果。快速排序的时间复杂度为O(NlogN).也是基于分治的思想,1、在数组中选择一个基准点base,2、分别从数组的两端start,end扫描数组,3、设两个指示标志(low指向起始位置,high指向末尾),4、规则是从后半部分开始向里扫描(high--),如果发现有元素比该基准点的值小(base <= arr[high]...原创 2019-04-25 23:43:11 · 168 阅读 · 0 评论 -
归并排序Java
各种视频,各种文章上查阅后整理分享。站在巨人的肩膀上摘苹果。a={1,3,5} b={2,4,6,8,10,12}两个数组各自有序,想要合并之后有序直接合并无法实现可以先创建长度与它们加一起一样长的新数组c 首先对比a[0]与b[0] ,b[0]=2 < a[0]=1,将b...原创 2019-04-25 01:01:28 · 162 阅读 · 0 评论 -
Java 二分查找算法
原理:每次都将数组进行折中,取中间值mid,用中间值比对目标值,看与目标值谁大谁小,如果比目标值大则,区间就是[start, mid - 1],如果比目标值小则,查找区间就是[mid + 1, end]。弊端:只适合有序数列。如果无序则无效了;Java 代码public class BinarySearch { public static void main(Stri...原创 2019-06-11 22:33:05 · 2248 阅读 · 2 评论