数据结构
秦始皇的天下
心中无敌,方能无敌于天下!
运气是强者的谦辞,命运是弱者的借口!
展开
-
【数据结构】-递归求出最大值
使用递归求最大值* 递归排序:能用递归解决的问题都可以使用非递归来完成。* 时间复杂度:T(N) = a*T(N/b) + O(N^d)* 1) log(b,a) > d --> 复杂度为O(N^log(b,a)) * 2) log(b,a) = d --> 复杂度为O(N^d * logN)* 3) log(b,a) < d --> 复杂度为...原创 2019-03-16 17:04:37 · 1285 阅读 · 0 评论 -
【数据结构】--【集合】详解JDK1.8 ArrayList扩容机制源码,一张图搞明白
废话不多说 直接上图首先ArrayList有三种构造器;三种构造器都比较好理解,这里就简单说一下:1、默认的构造器返回了一个空的数组,ArrayList在创建的时候,如果没有指定初始容量就会返回一个长度为0的空数组。如果第一次添加数据的话数组的容量扩容长度为DEFAULT_CAPACITY=10。至于如何扩容稍后详谈。2、第二个构造器会构造一个包含指定 co...原创 2019-03-18 20:05:54 · 324 阅读 · 0 评论 -
【数据结构】--【排序】--堆排序详解
* 堆排序和简单选择排序都是选择排序* 堆排序:将数组看成完全二叉树的结构,根据数组的顺序下标建立抽象的二叉树(需要理解);有大根堆和小根堆;* 插入实现的思想:每次插入的都是叶子节点,插入的时候根据数组的下标作为依据进行判断:插入元素的父节点(i-1)/2的值是否大于等于插入的节点,如果是不做处理,* 否则,将两者数据进行互换,同时索引指针指向父节点,在进行验证,wh...原创 2019-03-18 10:40:29 · 144 阅读 · 0 评论 -
【数据结构】--【集合】Map集合总结xmind思维导图HashMap扩容详解
Map集合重点总结HashMap重要的方法-构造器HashMAP四种构造器HashMap重要的方法-put方法HashMap重要的方法-get方法HashMap重要的方法-resize()方法-扩容final Node<K,V>[] resize() { //首先赋值给oldTab相当于是一个temp临时数组的作用 //因为在后面建立新数组后...原创 2019-03-21 08:19:12 · 487 阅读 · 0 评论 -
【数据结构】--【集合】Collection集合总结xmind思维导图ArrayList扩容
主要内容:对ArrayList(初始化方式、扩容机制重点)、LinkedList、HashSet、TreeSet等进行重要总结,精准打击、提取干货原创 2019-03-21 08:12:18 · 583 阅读 · 1 评论 -
【数据结构】--【排序】--快速排序详解
* 和冒泡排序一样都是交换排序。* 快速排序:大样本下一般都是使用快速排序,因为:代码简洁意味着使用的变量少;使用的辅助空间小;时间复杂度好;* 时间复杂度:快速排序和数组是否有序相关,在最坏情况下为O(n^2).平均情况为O(logN),一般平均期望就是O(logN)* 空间复杂度:由于快速排序是需要递归的,需要借助递归工作栈保存每一层递归调用的“指针”;其容量与递归调用的深度是一致...原创 2019-03-17 12:07:09 · 341 阅读 · 0 评论 -
【数据结构】--【排序】--荷兰国旗详解
* 荷兰国旗:将给定一个数组arr,和一个数num,请把小于num的数放在数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。* 要求额外空间复杂度O(1),时间复杂度O(N)* 思路:需要三个指针(小于num指针small、等于num指针equal、大于num指针big) 有以下三种情况* 1、cur小于num,s...原创 2019-03-17 10:13:55 · 660 阅读 · 0 评论 -
【数据结构】--【排序】--简单选择排序
* 简单选择排序:最好的移动次数0次,但元素间的比较次数与序列初始值无关,始终是n(n-1)/2.时间复杂度始终是n*n* 空间复杂度为O(1)* 不稳定的排序:L{2,2,1}--->L{1,2,2}* 特点:由于每一次都会选出最小值,因此每一趟都会确定出一个元素的最终位置,比较简单直接上代码public class SimpleSorting { public...原创 2019-03-16 22:12:58 · 298 阅读 · 0 评论 -
【数据结构】--【排序】--冒泡排序
* 冒泡排序:时间复杂度始终为O(n^2)* 空间复杂度为O(n^2)* 稳定算法* 特点:每次一趟排序都会将一个元素放到最终位置上比较简单,直接上代码public class BubbleSort { public static void bubbleSort(int arr[]){ if(arr== null||arr.length<2){...原创 2019-03-16 22:05:58 · 114 阅读 · 0 评论 -
【数据结构】--【排序】--归并排序详解
归并排序* 归并排序:时间复杂度T(N) = a*T(N/b) + O(N^d)* log(b,a) = d=1 --> 复杂度为O(N^d * logN) -->O(n*logn)* 空间复杂度O(n)* 稳定性:不会交换相同数的位置,是一个稳定方法话不多说,直接上代码:public class MergeSort { pub...原创 2019-03-16 21:58:55 · 159 阅读 · 0 评论 -
【数据结构】--【排序】--直接插入排序
* 直接插入排序:在排序过程中,向有序子表逐个的插入元素操作进行了n-1趟,每趟操作都分为比较关键字和移动元素,而比较次数和移动次数取决于带排序表的初始状态。在最好情况下,时间复杂度O(n),最坏情况下O(n*n)* 稳定性:每次插入元素都是从后向前先比较在移动,稳定算法* 适用性:直接插入排序算法适用于顺序存储和链式存储的线性表,当为链式存储时,可以从后往前查找指定元素的位置;(大部分...原创 2019-03-16 12:05:54 · 301 阅读 · 0 评论 -
【数据结构】B树和B+树的区别,MySQL为什么使用B+树,查询方式等总结
本节内容主要为:B+树和B树的区别、B+ 树的优缺点、B树的特点、Hash表几种结构等原创 2019-08-21 23:01:31 · 1182 阅读 · 0 评论