小史:树的话,无非就是前中后序遍历、二叉树、二叉搜索树、平衡二叉树,更高级一点的有红黑树、B 树、B+ 树,还有之前你教我的字典树。 红黑树 一听到红黑树,小史头都大了,开始抱怨了起来。 小史:红黑树看过很多遍了,但是每次都记不住,它的规则实在是太多了,光定义就有四五条规则,还有插入删除的时候,需要 ...
分类:
数据库 时间:
2019-03-31 09:35:59
阅读次数:
190
之前分析了红黑树的删除,这里附上红黑树的完整版代码,包括查找、插入、删除等。删除后修复实现了两种算法,均比之前的更为简洁。一种是我自己的实现,代码非常简洁,行数更少;一种是Linux、Java等源码版本的实现,实现的略为复杂,但效率更高。两种算法经过测试,在百万级的数据上效率不分伯仲;1000万的数 ...
分类:
编程语言 时间:
2019-03-30 21:28:18
阅读次数:
141
红黑树具有很优秀的特性,其自平衡性特性,局部调整特性使得红黑树插入,删除,以查找,以及这些过程的内存资源的占用,的综合性能是非常高的(通常我们会拿红黑树和AVL树进行对比)。 对于红黑树的这些特性,在此不再赘述。我们在此讨论红黑树的插入,删除的过程。 先讨论插入过程: 1 插入节点为根结点,则红色变 ...
分类:
其他好文 时间:
2019-03-29 21:06:19
阅读次数:
265
1.可利用空间表及分配方法 两种结构的可利用空间表:目录表和链表 此仅讨论链表。 常用的三种分配策略: 1.首次拟合法:从表头指针开始查找可利用空间表,将找到的第一个大小不小于n的空闲块的一部分分配给用户。 2.最佳拟合法:将可利用空间表中一个不小于n且最接近n的空闲块的一部分分配给用户。 3.最差 ...
分类:
其他好文 时间:
2019-03-29 01:15:31
阅读次数:
178
1、ArrayList 1)继承结构 2)ArrayList是数组存储结果,初始容量为0,添加第一个元素后容器为10,后面每次超过容量时,容量递增50%,每次扩容都需要产生新的数组,再把老的数据复制过去。 3)优缺点 优点:存取速度快 缺点:事先必须知道数组的长度、插入删除元素很慢、空间通常是有限制 ...
分类:
其他好文 时间:
2019-03-28 00:33:00
阅读次数:
144
1.关于数组和链表 数组:支持随机存取,取数据时时间复杂度O(1) 插入删除的时间复杂度O(N) 链表:不支持随机存取,取数据时时间复杂度O(N) 插入删除的时间复杂度为O(1) 2.排序的时间复杂度 冒泡排序、选择排序、插入排序,平均时间复杂度为O(N^2) 归并排序、快速排序、堆排序,平均时间复 ...
分类:
其他好文 时间:
2019-03-25 23:40:34
阅读次数:
288
题目地址: "P5270 无论怎样神树大人都会删库跑路" 暴力模拟都会吧...... 50分代码: 这个插入删除是 $O(n)$ 的 我们能不能把它搞成 $O(1)$ 的? 答案是可以 考虑 Hash 思想 先看代码: include define ull unsigned long long de ...
分类:
其他好文 时间:
2019-03-23 19:46:14
阅读次数:
184
https://leetcode.com/problems/all-possible-full-binary-trees/ 给定节点个数,求所有可能二叉树,该二叉树所有节点要么有0个子节点要么有两个子节点。返回所有二叉树的头指针。 一开始一直想的是从根节点开始建树,一直想不出来方法。后来想到可以从子 ...
分类:
其他好文 时间:
2019-03-23 10:38:04
阅读次数:
129
1、循环链表的定义循环链表是一种首尾相连的链表。特点是无需增加存储量,仅对表的链接方式修改使表的处理灵活方便。空循环链表仅由一个自成循环的头结点表示。2、单向循环链表在单向链表中,头指针是相当重要的,因为单向链表的操作都需要头指针,所以如果头指针丢失或者破坏,那么整个链表都会遗失,并且浪费链表内存空... ...
分类:
其他好文 时间:
2019-03-19 15:16:44
阅读次数:
196
11、分离头指针情况下的注意事项 所谓分离头指针,即在git切换到某一commit时,没有绑定在分支或者tag上,此时如果在该commit下进行了文件修改,并且提交commit时,git在日后清理该提交而不保存,因此在进行commit查看时,最好绑定在某一branch或者tag上操作,当然这种操作的好处也存在,即不会破坏原有的branch环境。$gitcheckout0bd98cb5d0
分类:
其他好文 时间:
2019-03-18 19:54:06
阅读次数:
174