![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
会过去的。
这个作者很懒,什么都没留下…
展开
-
用队列结构实现栈结构
如何仅用队列结构实现栈结构?如何仅用栈结构实现队列结构?public static class TwoQueuesStack { private Queue<Integer> data; private Queue<Integer> help; public TwoQueuesStack() { data = new LinkedList<...原创 2020-04-30 11:55:13 · 73 阅读 · 0 评论 -
返回栈中最小元素
实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返 回栈中最小元素的操作。【要求】1.pop、push、getMin操作的时间复杂度都是O(1)。2.设计的栈类型可以使用现成的栈结构。public class Code_01_Array_To_Stack_Queue { public static class ArrayStack { private Integer[] ar...原创 2020-04-30 11:49:41 · 132 阅读 · 0 评论 -
用数组结构实现大小固定的队列和栈
用数组结构实现大小固定的队列和栈public class Code_01_Array_To_Stack_Queue { public static class ArrayStack { private Integer[] arr; private Integer size; public ArrayStack(int initSize) { if (initSize &l...原创 2020-04-29 23:11:30 · 111 阅读 · 0 评论 -
1.9桶排序
比较器继承Comparator<>接口,重写里面的compareTo方法。public static class IdAscendingComparator implements Comparator<Strudent>{ @Override public int compare(Student o1, Student o2){ return o1.id - o...原创 2020-04-17 23:27:41 · 193 阅读 · 0 评论 -
1.8排序稳定性
排序算法的稳定性及其汇总稳定性的意义介绍一下工程中的综合排序算法有关排序问题的补充:1,归并排序的额外空间复杂度可以变成O(1),但是非常难,不需要掌握,可以搜“归并排序 内部缓存法”2,快速排序可以做到稳定性问题,但是非常难,不需要掌握,可以搜“01 stable sort”3,有一道题目,是奇数放在数组左边,偶数放在数组右边,还要求原始的相对次序不变,碰到这个问题,...原创 2020-04-15 23:30:21 · 192 阅读 · 0 评论 -
1.7堆排序
堆排序的细节和复杂度分析时间复杂度O(N*logN),额外空间复杂度O(1)堆结构非常重要1,堆结构的heapInsert与heapify2,堆结构的增大和减少3,如果只是建立堆的过程,时间复杂度为O(N)4,优先级队列结构,就是堆结构代码演示public class Code_03_HeapSort { public static void heapSort(int[] ...原创 2020-04-14 23:44:56 · 170 阅读 · 0 评论 -
1.6快速排序
描述:代码演示public class Code_04_QuickSort { public static void quickSort(int[] arr) { if (arr == null || arr.length < 2) { return; } quickSort(arr, 0, arr.length - 1); } public static...原创 2020-04-13 21:45:45 · 155 阅读 · 0 评论 -
1.5荷兰国旗
给定一个数组arr,和一个数num,请把小于等于num的数放在数组的左边,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)问题二(荷兰国旗问题)给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)代码演示:public cla...原创 2020-04-11 23:18:03 · 145 阅读 · 0 评论 -
1.4排序算法(二)
归并排序归并排序的细节讲解与复杂度分析时间复杂度O(N*logN),额外空间复杂度O(N)代码演示public class Code_05_MergeSort { public static void mergeSort(int[] arr) { if (arr == null || arr.length < 2) { return; } mergeSort(...原创 2020-04-10 23:00:46 · 104 阅读 · 0 评论 -
1.3对数器与递归相关概念
对数器的概念和使用(理解)0,有一个你想要测的方法a,1,实现一个绝对正确但是复杂度不好的方法b,2,实现一个随机样本产生器3,实现比对的方法4,把方法a和方法b比对很多次来验证方法a是否正确。5,如果有一个样本使得比对出错,打印样本分析是哪个方法出错6,当样本数量很多时比对测试依然正确,可以确定方法a已经正确。public static int[] generateRando...原创 2020-04-09 12:04:56 · 167 阅读 · 0 评论 -
1.2排序算法(一)
一.冒泡排序冒泡排序细节的讲解与复杂度分析时间复杂度O(N^2),额外空间复杂度O(1)代码演示public class Code_00_BubbleSort { public static void bubbleSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int ...原创 2020-04-08 21:18:25 · 259 阅读 · 0 评论 -
1.1时间复杂度
认识时间复杂度常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。时间复杂度为一个算法流程中,常数操作数量的指标。常用O(读作big O)来表示。具体来说,在常数操作数量的表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(N),那么时间复杂度为O(f(N))。评价一个算法流程的好坏,先看时间复杂度的指标,然后再分析不同...原创 2020-04-07 23:11:56 · 216 阅读 · 0 评论