数据结构
TreeCode
我喜欢种树
展开
-
HashMap源码探究之put方法(仅包含链化过程)
JDK版本:1.8.0_201 不整花里胡哨的,直接上源码 put方法,先用自定义方法计算hash,然后调用putVal方法: public V put(K key, V value) { //这里要先用HashMap自己定义的方法计算key的哈希值 return putVal(hash(key), key, value, false, true); } 自定义方法计算hash //hashCode是32位,右移16位后与原hashCode进行异或运算,然后返回结果原创 2020-08-14 08:10:41 · 266 阅读 · 0 评论 -
经典排序算法--冒泡排序
冒泡排序原理: 排序每一轮确定一个最小值或最大值,下一轮排序元素数量就可以减一,所以最坏情况只要排序数组长度减一次就可以将顺序确定下来。 实现过程 假设本次排序按从小到大的顺序排列。 第一次排序前,用两个指针分别指向数组0号元素和1号元素,如果0号元素大于1号元素,两个元素交换位置,否顺序不变,然后指针各自向后移一位,所以只要初始指向1号元素的指针到达数组尾部,就说明两个指针已经遍历过数组的所有元素,此时即可停止本轮排序。经过第一轮排序后,可以确定出一个最大值,且这个值会排在数组的最后一个位置,然后原创 2020-08-12 11:50:19 · 328 阅读 · 0 评论 -
数据结构之红黑树新增节点
红黑树定义 红黑树的每个节点或是红的,或是黑的 根节点是黑的 每个叶子节点是黑的 如果一个节点是红的,则它的两个子节点是黑的 对每个节点,从该节点到其子孙节点的所有路径上包含相同数目的黑节点。 补充解释: 1.对第四条的定义可以解释为不能出现连续两个红节点 2.新增节点时,节点的初始颜色应该是红色的,否则会违反定义第五条。 3.能通过变色解决的问题就别旋转 4.新增节点后整棵树必须仍然满足上面五条定义的规则。 红黑树新增节点情况图解分析 1.没有根节点,变色 2.父节点是黑色时,不用进行操作原创 2020-08-03 18:26:09 · 404 阅读 · 0 评论