数据结构与算法
文章平均质量分 62
chinusyan
这个作者很懒,什么都没留下…
展开
-
排序算法java
冒泡排序一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序如果有n个数据进行排序,总共需要比较n-1次每一次比较完毕,下一次的比较就会少一个数据参与代码实现:import java.util.Arrays;/** * @Author: * @Date: 2020/9/16 9:05 */public class Test { public static void main(String[]原创 2021-10-31 15:28:59 · 244 阅读 · 1 评论 -
分布式Id生成算法
温故知新-分布式-分布式Id生成算法&踩过的坑1、SnowFlake理解分布式id生成算法SnowFlake分布式id生成算法的有很多种,Twitter的SnowFlake就是其中经典的一种。概述SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图:由于在Java中64bit的整数是long类型,所以在Java中SnowFlake算法生成的id就是long来存储的。SnowFlake可以保证:所有生成的id按时间趋势递增整个分布式系统内不会产生重原创 2021-10-31 10:30:12 · 178 阅读 · 0 评论 -
KD Tree的原理及实现
KD Tree的原理及Python实现原创 2021-10-10 14:33:15 · 251 阅读 · 0 评论 -
B树(B-tree)
注意:之前有看到有很多文章把B树和B-tree理解成了两种不同类别的树,其实这两个是同一种树;一、基本原理首先,简单说一下B树产生的原因。B树是一种查找树,我们知道,这一类树(比如二叉查找树,红黑树等等)最初生成的目的都是为了解决某种系统中,查找效率低的问题。B树也是如此,它最初启发于二叉查找树,二叉查找树的特点是每个非叶节点都只有两个孩子节点。然而这种做法会导致当数据量非常大时,二叉查找树的深度过深,搜索算法自根节点向下搜索时,需要访问的节点也就变的相当多。如果这些节点存储在外存储器中,每访问一个节点原创 2021-09-09 22:05:08 · 433 阅读 · 0 评论 -
常用工具(数据结构)
数据结构可视化网址https://www.cs.usfca.edu/~galles/visualization/Algorithms.html原创 2021-09-09 17:38:58 · 533 阅读 · 0 评论 -
什么是二叉树
满足以下两个条件的树就是二叉树:本身是有序树;树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2;二叉树的性质二叉树中,第 i 层最多有 2^( i-1)个结点。如果二叉树的深度为 K,那么此二叉树最多有 2^K-1 个结点。二叉树中,终端结点数(叶子结点数)为 n0,度为 2 的结点数为 n2,则 n0=n2+1。二叉树还可以继续分类,衍生出满二叉树和完全二叉树。满二叉树如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。完全二叉树如果二叉原创 2021-09-09 07:15:51 · 5339 阅读 · 0 评论 -
数据结构:树
树结构是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。树的结点结点:使用树结构存储的每一个数据元素都被称为“结点”。父结点(双亲结点)、子结点和兄弟结点:对于图(A)中的结点 A、B、C、D 来说,A 是 B、C、D 结点的父结点(也称为“双亲结点”),而 B、C、D 都是 A 结点的子结点(也称“孩子结点”)。对于 B、C、D 来说,它们都有相同的父结点,所以它们互为兄弟结点。树根结点(简称“根结点”):每一个非空树都有且只有一个被称为根的结点。图(A)中,结点A就是整棵树的根原创 2021-09-09 06:41:17 · 2607 阅读 · 0 评论 -
算法复杂度中的O(logN)底数是多少
问题:最近有好几学生问我,无论是计算机算法概论、还是数据结构书中,关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN的底数究竟是多少。解答:算法中log级别的时间复杂度都是由于使用了分治思想,这个底数直接由分治的复杂度决定。如果采用二分法,那么就会以2为底数,三分法就会以3为底数,其他亦然。不过无论底数是什么,log级别的渐进意义是一样的。也就是说该算法的时间复杂度的增长与处理数据多少的增长的关系是一样的。我们先考虑O(logx(n))和O(logy(n)),转载 2021-09-07 14:05:58 · 380 阅读 · 0 评论