数据结构和算法
zaoanmiao
得搞。。这个得搞。。
展开
-
为什么mysql要使用B+树
思路顺序:一、首先我们的一个表的数据在磁盘上由于插入顺序的原因肯定不是顺序存放,如果按照表字段内容顺序查找,如果一个500万条数据的表,要找的刚好是第500万个值,则需要与磁盘做500万次IO,效率低下二、为什么不用二叉树,如果将一个乱序的数据放入二叉树中,效率会高,但是如果数据是有顺序的,比如1、2、3、4、5,则二叉树将会编程一个链表的样式,失去了二叉树的优势三、为什么不用红黑树,红黑树也叫二叉平衡树,红黑树可以有效解决掉顺序数据一次放入二叉树而导致的形成链表的结果,但是红黑树一个节点只能存原创 2022-02-08 06:05:39 · 2511 阅读 · 0 评论 -
java希尔排序
public class ShellSort { public static void main(String[] args) { int a [] = { 9, 8, 7, 0, 1, 3, 2, 10, 5, 12, 7, 0, 15 }; int n = a.length; for (int add = n / 2; add >= 1; add /= 2){ for (int i = add; i < .原创 2021-10-02 08:34:25 · 190 阅读 · 0 评论 -
java插入算法
public class InsertionSort { public static void main(String[] args) { int [] test = {5,2,7,4,9,3,1,2,5}; // 外层i从1开始,因为认为0位是已经排好的 for (int i = 1; i < test.length; i++){ // 取出第i的数字 int data = test[i].原创 2021-09-21 17:46:36 · 195 阅读 · 0 评论 -
递归(斐波那契和N的阶乘)
public class Fibonacci { /** * 原始斐波那契 */ private static int nomalFibonacci(int n){ if (n <= 1){ return 1; } else { return nomalFibonacci(n - 1) + nomalFibonacci(n - 2); } } /*.原创 2021-09-21 17:45:17 · 146 阅读 · 0 评论 -
单向链表实现LRU
/** * 通过单向链表实现LRU */public class LRUTest { public static void main(String[] args) { LRUCirLinkList lruCirLinkList = new LRUCirLinkList(); lruCirLinkList.insertValue("1"); lruCirLinkList.insertValue("2"); lruCirLinkL.原创 2021-07-07 05:56:38 · 298 阅读 · 0 评论 -
使用单向循环链表解决约瑟夫问题
public class JosephProblem { /** * 使用单向循环链表解决约瑟夫问题 */ public static void main(String[] args) { // 造数据 OneWayCircular oneWayCircular = new OneWayCircular(); oneWayCircular.insertNode(0); oneWayCircular.in.原创 2021-06-28 22:52:08 · 107 阅读 · 1 评论 -
简单实现双向链表
import java.awt.*;public class MyDoubleLinkList { private DoubleNode headNode; private DoubleNode tailNode; private int length; /** * 插入头节点 * @param value */ public void insertHead(String value){ DoubleNode .原创 2021-06-26 23:10:28 · 75 阅读 · 0 评论 -
自主简单实现LinkList
import java.util.Arrays;public class MyLinkList { static private Node head = null; /** * 头部增加元素 */ public void insertHead(String value){ Node node = new Node(value); if (head == null){ head = node; .原创 2021-06-22 22:09:03 · 468 阅读 · 0 评论 -
数组栈实现简单算数计算
import java.util.HashMap;import java.util.Map;public class SimpleArithmeticTest { public static void main(String[] args) { // 设置优先级 Map<String, Integer> priorityMap = new HashMap<>(); priorityMap.put("+", 1); .原创 2021-05-30 11:31:12 · 114 阅读 · 0 评论 -
使用栈实现括号匹配
public class ParenthesisMatchingTest { public static void main(String[] args) { String par01 = "(){([])}"; // true String par02 = "{}({({})}"; // false String par03 = "{(})"; // false String par04 = "{([])}]"; // false.原创 2021-05-30 08:14:10 · 667 阅读 · 0 评论 -
使用数组简单实现栈
import java.util.Arrays;public class MyArrayStack<T> { private T[] arrayStack = (T[]) new Object[1]; private int stackSize = 0; // 当前栈中已存的数据量 /** * 构造函数,参数值为初始化数组的长度 * @param length */ public MyArrayStack(int lengt.原创 2021-05-27 18:45:25 · 100 阅读 · 0 评论 -
简单实现ArrayList功能
import java.util.Arrays;/** * 简单模拟ArrayList */public class MyArrayList { private Object array[] ; private int index; // 当前位置 private int size; // 设置初始总长度为10 public MyArrayList(){ this.index = 0; this.size = 8; .原创 2021-05-23 23:17:10 · 83 阅读 · 0 评论 -
数组获取年龄文件里的年龄个数
生成一个14亿的0-150岁然的年龄文件,文件内每行都只存0-150的年龄,使用数组读取文件中各个年龄的人数并打印,生成测试文件:import java.io.BufferedWriter;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import java.util.Random;public class MakeAgeTxt { /** * 随机生成14亿个0-150岁的年龄,每原创 2021-05-23 20:42:00 · 421 阅读 · 0 评论 -
使用Socket模拟服务端和客户端进行MD5校验
因为都是使用的java自己的类,所以搭建普通的java工程即可1、MD5的工具类import java.security.MessageDigest;public class MD5Utils { public static String strMD5ByUTF8(String originString){ if (originString != null) { try { MessageDigest md= M原创 2020-08-13 08:47:32 · 437 阅读 · 0 评论 -
搭建一个springboot工程测试md5加密
1、展示搭建本次测试所用的springboot工程结构其中,TestController模拟的是服务端接收post请求,TestMD5模拟的是客户端使用单元测试发送http请求2、展示pom.xml文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLS原创 2020-08-13 08:09:40 · 337 阅读 · 0 评论 -
数据结构和算法的定义
算法:任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。这样算法就是把输入转换成输出的计算步骤的一个序列。数据结构:是一种存储和组织数据的方式,旨在便于访问和修改。 ...原创 2018-12-10 22:16:51 · 580 阅读 · 0 评论