What: 策略是对算法的封装,是一种形为模式,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。 Why: 优点: 1.扩展性良好;2.避免使用多重条件...
插入优化 一,禁用索引 插入前禁用索引,插入完后再启用索引 禁用索引:alter table table_name disable keys启用索引:alter table ...
一,Order by 优化 如果创建复合索引 test_index(a,b) ,覆盖索引可提升查询速度,排序时要么都是升序,要么都是降序。排序时字段的名字按照索引的名字顺序来...
一,最左匹配原则 如果为联合索引 create index table on (a,b,c) 例:select * from table where a ='' and b=...
1)适配器模式是将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的2个类能协同工作。 2)适配器模式属于结构模式 3)适配器分...
给出一个问题,一个Robot类,有姓名(tom)和身高(150cm),创建10个属性和值一样的类。最简单直接的方法是new 10次这个类。 为了简化操作,可以使用原型模式。 ...
系统中共享的对象可以定义为单例模式。 恶汉模式 推荐使用的懒汉模式 (双重检查,静态类部类,枚举都为线程安全的模式) 枚举
1.单一职责原则(一个类只负责一项职责) 2.接口隔离(客户端不需要依赖他不需要的接口)例如:接口B中有5个方法,A类只需要B接口中的2个方法,但是实现B类后,必须要重写5个...
1)简单工厂模式属于创建型模式,是工厂模式的一种,简单工厂模式是工厂家族中最简单实用的模式 2)定义一个创建对象的类,由这个类来封装实例化对象的行为 3)在软件开发中,当我们...
从二叉排序树(BST)我们知道,如图: 或一个数组 int[] arr = {1,2,3,4,5,6}创建成二叉排序树后 由于树的层数较多(可能会成为一个单链表 如上图),遍...
一组数组int[] arr = {4,3,6,5,7,8},用二叉排序树后的结果是 此处用中序遍历后 为 3 4 5 6 7 8 创建二叉排序树的规则,根节点为arr[0],...
若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树。霍夫曼树是带权路径长度最短的树,权值较大的节点离根较近。这样说可能有些抽象,下面用图来举例说明 接下来实现...
首先有一个数组 int[] arr = {1,2,3,4,5,6,7} ,正常存储方式为线性存储,依然会有线性存储的缺点,做修改操作时变动较大。 接下来实现数组存储为二叉树形...
插值查找和二分查找唯一的区别只是在取得中间值下标的时候改成了 取自适应下标,只需要把 int mid = (left+right)/2 改成 int mid = left+...
如果懂了快速排序的话,对于理解二分查找就会更容易。同样也是左右指向不断的移动。先折半,然后左指向往后移动,右指向往前移,但是二分查找的前提必须是有序数组。下面演示代码:
二叉树的前,中,后序遍历
快速排序和冒泡排序一样也是交换排序的一种,快速排序是改进了冒泡排序,属于高级排序,时间复杂度也大大降低。 快速排序原理 首先在一组无规则数组中 例:{3,6,7,9,5,1,...
选择排序实现原理 一串无序数字 例: {6,3,7,9,5,1,4,8},首先我们假设数组arr[0]为最小值,让这个数字和后面的数字依次比较,如果还有比arr[0]更小的数...
插入排序实现原理: 例:现在有数组 int[] arr = {6,3,7,9,5,1,4,8},从小到大排列 把arr数组假想成2个数组 一个有序数组(就是已经排好顺序的数组...