基础知识
努力上进的Mr_wang
我要时刻保持微笑
展开
-
选择排序基本思想及复杂度分析
/*选择排序 (不稳定算法) * 基本思想:两个for循环嵌套,内部for循环用来找到最大(小)的元素,外部循环用来放置找到的元素 * 复杂度:需要遍历数组才能找到峰值元素,所以复杂度与原始序列是否有序无关,最好最坏和平均情况的时间复杂度都为O(n^2); * 需要一个临时变量用来交换数组内数据位置,所以空间复杂度为O(1) */ public static ...原创 2018-04-19 20:37:52 · 4297 阅读 · 0 评论 -
java8 date
System.out.println(LocalDate.now()); System.out.println(LocalTime.now());//获取星期几 System.out.println(LocalDate.now().minusDays(-1).format(DateTimeFormatter.ofPattern("E"))); ...原创 2019-05-08 18:29:14 · 277 阅读 · 0 评论 -
垃圾回收器
对于新生代和旧生代,JVM可使用很多种垃圾回收器进行垃圾回收,下图展示了不同生代不通垃圾回收器,其中两个回收器之间有连线表示这两个回收器可以同时使用。而这些垃圾回收器又分为串行回收方式、并行回收方式合并发回收方式执行,分别运用于不同的场景。如下图所示下面我们来逐一介绍一下每个垃圾回收器。1、Serial收集器看名字我们都可以看的出来,这个...转载 2019-03-02 22:00:21 · 213 阅读 · 0 评论 -
java关键字 transient
就是让某些被修饰的成员属性变量不被序列化。private transient boolean bol = false;1、类中的字段值可以根据其它字段推导出来,如一个长方形类有三个属性:长度、宽度、面积(示例而已,一般不会这样设计),那么在序列化的时候,面积这个属性就没必要被序列化了;2、其它,看具体业务需求吧,哪些字段不想被序列化;HashMap有个字段(modCount)是...原创 2019-02-13 20:12:45 · 298 阅读 · 0 评论 -
冒泡排序基本思想及其复杂度分析
/** 冒泡排序:(稳定算法)* 基本思想:冒泡排序属于比较简单的排序,以非递减为例,依次遍历数组,发现a[i]>a[i+1}的情况,swap(a[i],a[i+1])* 直到没有逆序的数据,完成排序* 可以用两个for循环嵌套实现,外层控制遍历次数,内层用来实现交换* * 也可以用一个boolean类型变量来控制是否有交换发生,如果没有交换,表明已经正序,可以直接输出* *...原创 2018-04-19 20:40:14 · 2315 阅读 · 0 评论 -
直接插入排序基本思想及其复杂度分析
/** 直接插入排序(稳定算法)* 基本思想:从第一个数开始,认定数组的前i个数有序,依次遍历数组,* 把后面的数据插入到合适的位置,使数组继续保持有序* 用两个for循环实现,外层i用来控制数组的数据量,内层用来找到a[i]需要插入的位置* 如果temp大于a[j]则把a[j]向后移动* 复杂度分析:* 时间复杂度:最好情况是数组有序,依次把数据放到前一个数的后面 O(n)*...原创 2018-04-19 20:41:05 · 1450 阅读 · 0 评论 -
shell排序基本思想及其复杂度分析
/** shell排序(希尔排序)* 基本思想:希尔排序选取一个增量h,也就是把整个数组分成h份,对每一份进行排序。* 然后减少增量h,重复上述过程。* 一般我们选取的递增序列为:3*h+1 即1,4,13,40,.....* 实现:用一个while语句求出对应数组我们所需要的最大h* 然后在用一个外层while循环控制h,每循环一次h=h/3;直至h自减至1;* 内层是直接插入...原创 2018-04-19 20:41:47 · 1708 阅读 · 0 评论 -
归并排序及其复杂度分析
/** (二分)归并排序(稳定算法)* 基本思想:将数组递归分成越来越小的数集,直到每个数集只有一个数* 然后将数据递归排序,使其合并成与原来数据一样的有序序列* 时间复杂度分析:递归分解数据,需要递归logN次,每次都需要对n个数据扫描一次,最好最坏平均都一样,所以O(nlogn)* 空间复杂度分析:归并排序需要一个临时temp[]来储存归并的结果,所以 O(n)** 基本...原创 2018-04-19 20:42:27 · 2465 阅读 · 0 评论 -
全排列 java版
public class PermulateTest { public static void swap(char[] array ,int i,int j){ char temp=array[i]; array[i]=array[j]; array[j]=temp; } public static void arrange(char[]array,int cnt){ i...原创 2018-07-16 18:47:17 · 167 阅读 · 0 评论 -
快速排序基本思想及复杂度分析
/*快速排序(不稳定算法) * 基本思想:选择数组任一数据作为k,依次从前向后 找到第一个比k大的元素,然后与k交换。 * 从后向前找到第一个比k小的元素,然后与k交换,直到遍历一次,k恰好放到正确的位置 * 然后在分别对k左和k右两部分进行快速排序 * 外层是while循环,条件start<end 为一次遍历 * 循环体两个while,一个从左到右找到第一个比k大的...原创 2018-04-19 20:39:17 · 1074 阅读 · 0 评论