数据结构和算法
数据结构和算法 学习笔记
ljt-tiger
不积跬步,无以至千里。知识认知体系搭建过程:场景 --》需求 --》解决方案 --》应用 --》原理
展开
-
雪花算法笔记
SnowFlake 中文意思为雪花,故称为雪花算法。最早是 Twitter 公司在其内部用于分布式环境下生成唯一 ID。在2014年开源 scala 语言版本。原创 2023-01-07 23:36:30 · 539 阅读 · 0 评论 -
mysql数据存储结构分析
二分查找算法折半查找考虑用有序数组作为索引的数据结构有序数组的等值查询和比较查询效率非常高,但是更新数据时可能要挪动大量的数据(index),所以只适合存储静态的数据为了支持频繁的修改,比如插入数据,我们需要采用链表。链表的话,如果是单链表,它的查找效率还是不够高…二叉查找树BST(Binary Search Tree) BTREE特点:左子树所有的节点都小于父节点,右子树所有的节点都大于父节点。投影到平面以后,就是一个有序的线性表左子树节点 < 父节点右子树节点 >原创 2021-07-22 22:09:39 · 896 阅读 · 0 评论 -
mysql发展简史
发展历史时间里程碑1996 年MySQL 1.0 发布。它的历史可以追溯到 1979 年,作者 Monty 用 BASIC 设计的一个报表工具1996 年10 月 3.11.1 发布。MySQL 没有 2.x 版本2000 年ISAM 升级成 MyISAM 引擎。MySQL 开源2003 年MySQL 4.0 发布,集成 InnoDB 存储引擎2005 年MySQL 5.0 版本发布,提供了视图、存储过程等功能2008 年MySQL AB 公司原创 2021-07-10 10:43:29 · 2487 阅读 · 0 评论 -
HashMap
HashMap散列表也叫哈希表,是存储Key-Value映射的集合。对于某一个Key,散列表可以在接近O(1)的时间内进行读写操作寻址方式对key按一定的计算规则,算出hash值,并对数组长度进行取模// 取模代价远远高于位操作代价,因此 Array.length等于二的幂index = HashCode (Key) % Array.length 哈希冲突当插入的Entry越来越多时,不同的Key通过哈希函数获得的下标有可能是相同的。例如002936这个Key对应的数组下标是2;0029原创 2021-07-03 23:20:18 · 162 阅读 · 1 评论 -
统计某区间内的素数并打印显示
1、素数统计:统计输出 start到end之间的所有素数?2、明确什么叫素数:除了能被1和它本身整除外不能被其他数整除的数叫素数。3、写了两种方法,两种思路原创 2017-09-05 00:42:25 · 380 阅读 · 0 评论 -
利用钩子函数测试某段代码的执行效率
后期可以利用动态代理切入,或者aop切入原创 2017-08-19 13:23:50 · 304 阅读 · 0 评论 -
统计某java文件中的代码行数、某个字符(char)、某字符串(String)出现的次数
1、统计java文件中的代码行数。2、统计java文件中某char字符出现的次数。3、统计java文件中某字符串String出现的次数。4、实现方式比较粗暴,不知道还有没其他方式,有的话,多多交流,微信:YY7920209原创 2017-08-13 13:38:37 · 661 阅读 · 0 评论 -
简单的可视化日历系统
根据提示输入年份和月份,自动显示出日历界面【带有年月验证】原创 2017-07-11 08:48:30 · 840 阅读 · 0 评论 -
数组元素查找
本方法目标是找出给定数组中指定两标记之间的元素,实现代码如下: /** * 功能:找出给定数组中指定两标记之间的元素 * @param original 原始数据 * @param startLabel 头标记 * @param endLabel 尾标记 */ public static void findBetween(String origin原创 2017-07-07 08:49:13 · 444 阅读 · 0 评论 -
查找数组中指定元素
原始数据【 "abcDDAabDC79799799abc9089q23rasdfabc" 】。 代码如下: /** * 功能:找出给定数组中指定两标记之间的元素 * @param original 原始数据 * @param startLabel 头标记 * @param endLabel 尾标记 */ public static void findBetween(...原创 2017-07-06 18:39:43 · 1115 阅读 · 0 评论 -
一个抽象类Shape 里边有两个抽象方法 计算面积 和 周长; Shape由三角形和圆形继承,利用多态的特性设计完成不同子类的功能
原意要求如图:实现代码如下:原创 2017-07-03 19:45:25 · 17369 阅读 · 1 评论 -
简单的快速排序
1、定义int i = start;int j = end;再定义一个标志位flag,初始化flag=true。2、在循环体中比较,只要i不等于j,就进行比较。3、刚开始将value = arr[0]固定,将value逐一与后边值比较,直到value值大于后边某个值时,则交换,同时改变标志位为false。不满足则 j 减减,直到满足为止或者 i=j退出循体。4、接着第三步,标志位变为false之后,value值被固定在后边某个值,将value逐一与前边值比较,直到value值小于前边某个值时,则交换,原创 2017-07-30 16:45:56 · 294 阅读 · 0 评论 -
冒泡排序与选择排序之间的联系
结论:永远不要选择第二种第一种:* 冒泡排序实现原理:相邻两个数两两比较,如果满足条件则交换,不满足,则进行下一个相邻的比较。* 第一轮,将最大或最小的数搬到索引末端。* 第二轮,将次大的放到索引次末端。* ......* 最后一轮,实现全部排序里、外层跑的次数有数组长度决定,而交换次数由数组混乱度决定三者之间的次数关系arr.lengthoutCount = arr.length - 1innn...原创 2017-07-23 12:33:20 · 402 阅读 · 0 评论 -
二叉排序
实现二叉排序算法增加元素的功能。原创 2017-07-15 11:05:53 · 266 阅读 · 0 评论 -
二分查找算法
工具类 SearchUtil,兼容类型: int[], double[], char[],代码示例如下:package com.tiger.practice;/** * 工具类 SearchUtil,兼容类型: int[], double[], char[] * @author Administrator * */public class SearchUtil { /** * 二...原创 2017-06-29 12:18:11 · 324 阅读 · 0 评论 -
递归实现斐波那契数列
斐波那契数列:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)package com.algorithm.tiger.recursion;/** * 递归的思想:先递进,后回归(碰到终结条件即开始回归) * 利用递归思想实现 Fibonacci 数列 * 斐波那契数列:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*) * * @description: 斐波那契数列 * @a.原创 2020-07-18 11:57:16 · 1969 阅读 · 0 评论 -
递归调用简单解说
1、已知条件:f(0)=1,f(1)=4,f(n+2)=2*f(n+1)+f(n);推导出:f(n)=2 * f(n - 1) + f(n - 2)。2、总结出递归表达式。3、写在最后边的返回值上。4、表达式是由前边的推导过程得出,就算是口算推导也能算得出原创 2017-07-16 08:33:23 · 335 阅读 · 1 评论 -
0x61c88647
public class HashDemo { private static final int HASH_INCREMENT = 0x61c88647;// private static final int HASH_INCREMENT = 1640531527; public static void main(String[] args) { //2的n次方 magicHash(2 *2*2*2*2);// magic.原创 2020-11-01 18:23:18 · 597 阅读 · 0 评论 -
二叉树的构建以及二叉树的遍历
1、二叉树的遍历: 1)、深度优先遍历:遍历顺序如下 1.前序遍历:根节点、左子树、右子树 2.中序遍历:左子树、根节点、右子树 3.后序遍历:左子树、右子树、根节点 2)、广度优先遍历: 1.层序遍历:2、代码如下:package com.algorithm.tiger.tree;import com.algorithm.tiger.json.JsonUtils;import org.springframework.util.Collect...原创 2020-07-19 12:43:21 · 170 阅读 · 0 评论 -
数组实现队列(循环队列)的思想以及简易代码
/* * Copyright (c) 2020. Lorem ipsum dolor sit amet, consectetur adipiscing elit. * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. * Proin .原创 2020-07-12 14:36:08 · 304 阅读 · 0 评论 -
实现单向链表的思想以及简易代码
package com.algorithm.tiger.linkedlist;/** * 链表(由众多节点相连组成) * * @description: 单向链表 * @author: tiger * @create: 2020-07-11 11:05 */public class MyLinkedList { //链表头部节点 private Node head; //链表尾部节点 private Node tail; //链表实际大小 .原创 2020-07-11 22:26:37 · 257 阅读 · 0 评论