数据结构
2020越努力越幸运
这个作者很懒,什么都没留下…
展开
-
堆排序
堆排序算法设计,源代码: 算法大致思路,每次将数据大顶堆,然后将大顶堆中的根和最后那个数交换,就可以进行一次查最大元素了,接下来再将剩下的数据再次排成大顶堆,依次循环,知道剩下最后一个元素,那么这个元素就是最小的那个崽了,至此排序完成。 在生成大顶堆的时候,可以从最后一个元素开始依次将其与父节点进行比较,我的想法是如果这个数是双数的话,那么其父节点(假设存在父节点)只有一个子节点,因此这个时候...原创 2019-03-01 19:38:21 · 85 阅读 · 0 评论 -
数据库索引原理
数据库索引使用的是b树,而不是用红黑树,主要原因是由于红黑树的特性,红黑树的高度一般都会比b树要高,而索引的原理是根据查询的次数即时间复杂度来决定,详细介绍以下博客链接: http://blog.codinglabs.org/articles/theory-of-mysql-index.html ...原创 2019-03-29 22:41:22 · 85 阅读 · 0 评论 -
红黑树
红黑树是一种平衡二叉树,也是一种二分查找树,这种数据结构就是保证在查询一个数的时候可以保证查询的时间复杂度为lgn,红黑树是一种特殊平衡二叉树,因为一般的平衡二叉树在节点的增加和删除的时候为了依然保持平衡的性质,在对树进行调整的过程中很复杂也很麻烦,所以就对一般的平衡二叉树进行了修改,增加了一些其他的性质,也就是添加颜色,这样就可以在对节点进行增加删除操作调整结构的时候方便很多。 说到底,红黑树...原创 2019-03-29 09:49:57 · 76 阅读 · 0 评论 -
数据结构之判断子树
题目:给定一个树,判断另一个树是否是该树的子树,要求:约定空树不是任意一个树的子结构。 思路:依次遍历给定的树的每个节点(A),比较被求的节点(B)是否是该节点(A)以下的部分的子结构。如果是,直接返回true,如果不是,则再次将A节点的左节点和节点B比较,将A节点的右节点和B节点进行比较,取两者的并集。而比较每个节点(A)是否是节点(B)的父结构的方法是比较每个节点的值是否相等,如果相等,则再...原创 2019-04-25 19:41:48 · 327 阅读 · 0 评论 -
数据结构之反转链表
题目:将一个单链表进行反转,输出反转后的头指针。 思路:这里踩到了一个小坑,就是原始头指针在反转后,该节点的next指针是指向空的,因此,可以在开始的时候就设置其值,不然就会出现问题,会造成遍历的时候出现死循环。其余的比较好说。 代码: /* public class ListNode { int val; ListNode next = null; ListNo...原创 2019-04-23 21:12:43 · 129 阅读 · 0 评论