![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与分析
学的好秃的早
追风赶月莫停留,平芜尽处是春风
展开
-
高级排序之--快速排序
初入博客,如有不当之处请诸位多多包涵,技术交流为主,如有错误欢迎支持 定义 快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列,算法的复杂度为O(NlogN)。 步骤 (1)首先设定一个分界值,通过该分界值将数组分成左右两部分。 (.原创 2020-05-10 15:39:48 · 142 阅读 · 1 评论 -
希尔排序
希尔排序 希尔排序是对插入排序的改进,通过减少增量的方式(分组),将数据逐步基本有序化,从而提高插入排序的效率,减少插入的次数,也是第一个将突破O(n^2)的算法,但是希尔排序不是一个稳定的算法,最坏的情况的时候算法复杂度,比直接插入排序还要差,当数据量处于中等的时候效率较高,数据量小的时候效率低,。 这里采用的是Knuth的间隔序列 h=(h-1)/3 package com.yc.Pljq....原创 2020-05-07 16:33:24 · 123 阅读 · 0 评论 -
java实现huffmanTree以及编码--基础版本
先从思路入手 ,如何构造一颗haffmantree ? 首先就要先了解哈夫曼树是怎么构建的,哈夫曼树的构建不是从顶向下的而是自下而上的,即先确定叶子结点最后才生成根节点。 第一步:将所有的结点按照权值的大小先排好序如下图所示(可以用优先级队列来实现这个排序的结点,这样每次要取最小的两个结点的时候只要出队就行,插入结点的时候就一个入队的操作) 第二步:依次取两个最小权值的结点生成一颗树他们的父节点...原创 2020-04-27 14:50:22 · 296 阅读 · 0 评论 -
动态规划解决0-1背包问题
先上代码 package com.yc.AlgorithmAndAnalyze; /** * 动态规划解决0-1背包问题 * @author 29226 * */ public class Knapsack0And1 { public static int []flag=new int [5];//标记数组 /** * f[i,j]=max{f[i-1,j-weght[i]...原创 2020-04-22 11:22:19 · 99 阅读 · 0 评论 -
有序链表
有序链表的java实现分析话不多说直接上代码 分析 在大多数的有序数组的使用情况下都可以使用有序链表,且有序列表的性能要优于有序数组主要表现在连个方面 1:有序的链表插入速度快 (链表不要移动) 2:链表可以拓展到全部有效内存,而数组只能限于一个固定的大小中 话不多说直接上代码 package com.yc.Link; //节点类 public class Link { private in...原创 2020-04-14 13:04:52 · 349 阅读 · 0 评论 -
算法设计与分析
整数划分算法 java 实现 package com.yc.AlgorithmAndAnalyze; //整数划分求划分总数递归算法 public class split { /** * * @param n 被划分的整数 * @param max 最大的加数 * @return * 6(6+0) p(6,0) * 5+1 p(1,5) * 4+2 4+1+1 ...原创 2020-03-17 15:42:35 · 190 阅读 · 0 评论