class Animal { public String name; public int age; public Animal(){ this("dog",4); System.out.println("这是一个默认构造方法"); } public Animal( ......
301
0
0
2022-11-27
思路分析归并排序:是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使 子序列段间有序。图解代码示例1)递归方法//有两个重要的特点,可以适用于外部排序(数据在磁盘上),也可以适用于链表排序 // (希尔,堆排序,快速排序依赖随机访问能力,都不适合链表排序) ......
297
0
0
2022-11-27
思路解析1)取最右侧的值为基准值base,从数组的左右两边分别开始查找,先从左往右找比基准值大的值,再从右往左找比基准值小的数,找到之后,将两个找到的数进行交换2)在继续刚才的步骤,继续进行交换3)直到left和right重合,就把重合的位置与基准值base交换4)交换之后,原理的base就到了之前的重合位置,然后以这个数为分界线,分成左右两边,并对着两边的 ......
382
0
0
2022-11-27
题目要求给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。 每个节点用一个 [val, random_index] 表示: val:一个表示 Node.val 的整数。 random_index:随机指针指向的节点索引(范围从 0 ......
318
0
0
2022-11-27
思路分析冒泡排序是每次找到一个最大值或者最小值,放到合适的位置上,借助相邻元素比较交换的方式来完成。具体思路如下:用cur和cur+1两个位置进行比较,如果cur大于cur+1位置的值,那么就将两个位置的值交换,之后让cur+1继续比较交换,直到cur+1等于数组长度的时候为止,这样就可以把整个数组中最大的元素找到,放到了数组末尾,到此就已经完成了第一趟排序 ......
287
0
0
2022-11-27
思路分析堆排序的过程如下: 由于利用小堆会占用额外空间,因此先将一个堆按照大堆的方式进行创建,然后取堆顶元素与堆中的最后一个元素进行交换,接着将最后一个元素出堆,将剩余的元素进行向下调整,重新调整成一个大堆,接着再重复以上操作,知道排序完成。注意:排升序要建大堆;排降序要建小堆图解代码实现 public static void heapSort(int ......
406
0
0
2022-11-27
思路分析选择排序是每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的bound位置,直到全部待排序的数据元 素排完 。本文章中以升序为例,让已排序的序列中的最后一个元素为bound,让cur初始值为bound+1(就是未排序的第一个元素),然后和bound位置的值进行比较,如果bound位置的元素大于cur位置的元素,就交换顺序,再让cur往后走 ......
347
0
0
2022-11-27
思路分析希尔排序的主要实现逻辑还是基于插入排序的,插入排序的过程在上一篇文章中讲过啦,如果有兴趣的老铁可以查看以下文章:插入排序详细解说了解了插入排序后,希尔排序就可以迎刃而解了可以将整个数组分为gap组,这里的gap=array.length/2,然后进行插入排序,再将gap/2,再次进行插入排序,直到gap=1的时候,就可以得到最终的已排序数组图解代码实 ......
376
0
0
2022-11-27
堆是什么1.是一种特殊的二叉树(完全二叉树) 2.通过数组的方式顺序存储 3.对于这个数的任意节点来说,满足根节点大于左右子树的值(大堆),或者任意一节点满足根节点的值小于左右子树的值(小堆)堆能干啥1.能高效得找出一个集合的最大/最小元素(堆顶元素) 2.能高效得找到前K大/前K小的元素(topk问题)核心操作向下调整 & 向上调整1.向下调整(以 ......
431
0
0
2022-11-27
备忘录模式备忘录模式是一种行为设计模式, 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。备忘录模式又叫快照模式,用于在不破坏原对象封装的条件下保存对象某一时刻的 “状态” ,作为一个 “备忘录(或快照)” ,并且可以在原对象改变后通过备忘录恢复 原来的状态,最典型的例子是游戏存档。通过直接拷贝对象也可以保存状态,但保存的是整个对象的所有状态,恢复 ......
323
0
0
2022-11-27
组合模式(树)组合模式( Composite),将对象组合成树形结构以表示‘部分整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。组合模式类似于数据结构中的树形结构,如果某个对象可以由多个同类对象组合形成,那么他们之间就形成了一个数形结构,比如多级菜单:组合模式的实现组合模式包含三类角色:同类对象抽象出的公共接口Component,如所 ......
438
0
0
2022-11-27
将一个类的接口转换成客户希望的另外一个接口适配器模式适配器模式( Adapter),将一个类的接口转换成客户希望的另外一个接口。 Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式包括类适配器和对象适配器两种,类适配器是适配器类同时实现目标抽象类和适配者类,这样需要编程语言支持多继承。class Target: ......
336
0
0
2022-11-27
允许一个对象内部状态改变时改变其行为,使得这个对象看起来改变了其类。状态模式允许一个对象内部状态改变时改变其行为,使得这个对象看起来改变了其类。如果一个对象的行为取决于其内部的一个或多个动态变化的属性的值,那么这些属性被称之为状态(state),这类对象被称之为有状态的对象(stateful),行为与状态间的转换关系可以由状态转换图体现,如进程间的状态转换关 ......
339
0
0
2022-11-27
抽象工厂模式( Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式抽象工厂模式( Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 工厂方法中每一个工厂只提供一种产品,为此,抽象工厂将工厂方法中的所用工厂向上抽象出一个抽象工厂,将所有产品 ......
406
0
0
2022-11-27
观察者模式又叫发布订阅模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时会通知所有观察者对象,使它们能够自动更新自己。观察者模式观察者模式又叫发布订阅模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时会通知所有观察者对象,使它们能够自动更新自己。 有时 ......
333
0
0
2022-11-27