数据结构与算法
袁小黑
这个作者很懒,什么都没留下…
展开
-
Jdk之中的二分查找法
闲逛看代码,看到了JDK之中实现的二分查找法。这里做一下介绍:直接看源码/** * Searches the specified list for the specified object using the binary * search algorithm. The list must be sorted into ascending order * according to the specified comparator (as by the * {.原创 2020-07-16 21:43:56 · 491 阅读 · 0 评论 -
二叉搜索树
二叉搜索树的定义 二叉查找树(Binary Search Tree),或者是一颗空树,或者是具有下列性质的二叉树:1、若它的左子树不空,则其左子树上的所有结点的值均小于它根结点的值;2、若它的右子树不空,则其右子树上的所有结点的值均大于它根结点的值;3、它的左、右子树也分别为二叉查找树。代码实现树:public interface Tree<Key exten...原创 2018-08-26 14:48:34 · 230 阅读 · 0 评论 -
红黑树
背景二叉搜索树可以支持任何一种基本动态集合操作,二叉搜索树 介绍了高度为h的二叉搜索树的insert,search,getMin,getMax,delete等操作的时间复杂度都是,但是如果数据量过大,还是会出现瓶颈,而红黑树是平衡搜索树的一种,在上面的这些动态操作的情况下,最坏的时间复杂度能缩短为。本文以HashMap的红黑二叉树为例,看看红黑二叉树的原理。红黑树的定义:红黑树有以下5...原创 2018-08-26 22:41:13 · 342 阅读 · 0 评论 -
清晰理解红黑树的演变---红黑的含义
转载:https://blog.csdn.net/chen_zhang_yu/article/details/52415077前言 红黑树,对不少人来说是个比较头疼的名字,在网上搜资料也很少有讲清楚其演变来源的,多数一上来就给你来五条定义,红啊黑啊与根节点距离相等之类的,然后就开始进行旋转、插入、删除这些操作。一通操作下来,连红色和黑色怎么来的,是什么含义,有什么作用都云里雾...转载 2018-08-31 16:17:16 · 283 阅读 · 0 评论 -
B树
首先B树是搜索二叉树的一种拓展,B-Tree 是一种自平衡的树(所有的叶子节点拥有相同的高度)类型的数据结构。但是和其它树比如红黑树,AVL树只有两个孩子:左孩子和右孩子不同,B-Tree 的子节点多余或者等于2两个孩子。因此,有的时候M叉树,因为它可以有M个子节点(M>=2)。如图: B树一开始是针对机械磁盘而设计的,因为机械磁盘的磁头跳转消耗的时间比较...原创 2018-09-01 20:42:40 · 9354 阅读 · 0 评论 -
漫画 | 什么是跳跃表?
这是发生在很多年以前的故事......几天以前......几天之后......拍卖行的商品总数量有几十万件,对应数据库商品表的几十万条记录。如果是按照商品名称精确查询还好办,可以直接从数据库查出来,最多也就上百条记录。如果是没有商品名称的全量查询怎么办?总不可能把数据库里的所有记录全查出来吧,而且还要支持不同字段的排序。所以,只能提前...转载 2018-12-05 20:45:37 · 263 阅读 · 1 评论 -
为什么存在散列表
为什么存在散列表数组的时间复杂度INSERT 时间复杂度:空间足够: 直接添加在后面,时间复杂度为O(1),空间不足:整个数组移到另一个空间,再添加元素。总的时间复杂度:O(1)+O(n)=O(n)SEARCH时间复杂度:按顺序查找最坏时间复杂度:O(n)DELETE时间复杂度: 使用顺序查找找到删除位置,再把删除位置后的所有元素前移一位。 总时间复杂度:O(n)+O(n)=...转载 2019-03-10 22:04:14 · 222 阅读 · 0 评论 -
平方数之和
给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。示例1:输入: 5输出: True解释: 1 * 1 + 2 * 2 = 5示例2:输入: 3输出: False解题思路:这个解题思路可以参考:两数之和 II - 输入有序数组 题目的解法:时间复杂度为o(根号n)空间复杂度为o(1)代码如下:public class Ju...原创 2019-07-15 23:16:51 · 807 阅读 · 0 评论