10 2021 档案
摘要:单例模式概念 1.什么是单例模式? 保证整个系统中一个类只有一个对象的实例,实现这种功能的方式就叫单例模式。 2.实现单例模式的思路 1. 构造私有: 如果要保证一个类不能多次被实例化,那么我肯定要阻止对象被new 出来,所以需要把类的所有构造方法私有化。 2.以静态方法返回实例: 因为外界就不能通
阅读全文
摘要:1.基本数据结构 1. JDK1.7 数组 + 链表 2. JDK1.8 数组 + (链表 | 红黑树) 2.树化与退化 1.树化意义 1.红黑树用来避免Dos攻击,防止链表过长时性能下降,树化应该是偶然情况,是保底策略. 2.hash 表的查找,更新的时间复杂度是 O(1),而红黑树的查找,更新的
阅读全文
摘要:1.扩容机制 1.扩容是懒惰式的,即没有添加元素前,即时指定了容量,也不会真正的创建数组 2. add(Object o) 方法首次扩容为10,再次扩容为上次的1.5倍 3. addAll(Collection c) 方法首次扩容(没有元素)为10,或者添加的元素实际个数,取两者间的最大值 4. a
阅读全文
摘要:1.快速排序描述 1.每一轮排序选择一个基准点(pivot)进行分区 1.让小于基准点的元素进入一个分区,大于基准点的元素进入另一个分区 2.当分区完成时,基准点元素的位置就是其最终位置 2.在子分区重复以上过程,直至子分区元素个数少于等于1,这体现的是分而治之的思想(divide-and-conq
阅读全文
摘要:1.选择排序 1.何为选择排序: 以升序为例: 1.将数组分为两个子集,排序的和未排序的,每一轮从未排序的子集中选出最小的元素,放入排序子集. 2.重复上述步骤,知道数组有序 2.优化方式 1.为减少交换次数,每一轮可以先找到最小的索引,再每轮最后交换元素的位置 3.与冒泡排序比较 1.两者的时间复
阅读全文
摘要:二分查找 何为二分查找 1,前提:有已排序数组 A (假设已经做好) 2.定义左边界 L 、右边界 R ,确定搜索范围,循环执行二分查找(3、4两步) 3.获取中间索引 M = Floor (( L + R )/2) 4.中间索引的值 A [ M ] 与待搜索的值 T 进行比较 ① A [ M ]=
阅读全文

浙公网安备 33010602011771号