数据结构和算法
文章平均质量分 52
林志鹏JAVA
偶尔弹弹吉他
展开
-
安利一个学习数据结构的宝藏网站
安利一个学习数据结构的宝藏网站!!!原创 2022-04-27 17:03:19 · 1290 阅读 · 0 评论 -
Java实现MD5和国密SM3摘要算法
JDK提供的MD5摘要算法以及国密SM3算法实现原创 2022-02-08 17:37:48 · 5114 阅读 · 0 评论 -
【孤岛检查】找出给定的关系中,与中心节点有直接或间接关系的节点
文章目录前言一、需求二、代码实现三、总结前言在日常的业务性开发中,用到算法,记录一下一、需求 有一张表,存储两个节点之间的关系数据,比如有三个字段,id、source、target一条记录代表两个节点之间存在的直接关系。在这样一个场景下,要求给出一个节点,能找出所有关系中与该节点有直接或间接关系的节点。例如,所有的节点关系可构造成下图一样的图结构,给出节点Node 0 , 可找出所有与Node 0有直接或间接关系的节点(所有蓝色节点)。找不到 Node 11、Node 12(绿色节点)。原创 2021-11-12 09:56:41 · 536 阅读 · 0 评论 -
【十大排序算法系列】希尔排序
写在前面上一篇更新了这个系列的排序算法(【十大排序算法系列】插入排序)。分析了插入排序的流程逻辑以及代码实现,下面来写下希尔排序照例给出系列内所有算法的对比。。常见的十大排序算法有:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序等。常见的十大排序算法,时间复杂度和空间复杂度如下图:希尔排序介绍希尔(Shell)排序又称为缩小增量排序,它是一种插入排序,算是直接插入排序算法的一种优化版。由DL.Shell于1959年提出而得名希尔原创 2021-01-11 14:45:32 · 223 阅读 · 0 评论 -
【十大排序算法系列】插入排序
写在前面上一篇更新了这个系列的排序算法(【十大排序算法系列】选择排序)。分析了选择排序的流程逻辑以及代码实现,下面来写下插入排序照例给出系列内所有算法的对比。。常见的十大排序算法有:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序等。常见的十大排序算法,时间复杂度和空间复杂度如下图:插入排序定义插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。逻辑原创 2021-01-06 23:34:02 · 115 阅读 · 0 评论 -
【十大排序算法系列】选择排序
写在前面上一篇更新了这个系列的排序算法(【十大排序算法系列】快速排序)。分析了快速排序的流程逻辑以及代码实现,下面来写下选择排序照例给出系列内所有算法的对比。。常见的十大排序算法有:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序等。常见的十大排序算法,时间复杂度和空间复杂度如下图:选择排序介绍:选择排序比较简单,是对冒泡排序的一个改进,虽然两者最坏都是O(n^2)的时间复杂度,但是选择排序的效率是比冒泡要高一点的。选择排序的逻辑是原创 2021-01-06 17:21:17 · 159 阅读 · 0 评论 -
【十大排序算法系列】快速排序
写在前面上一篇更新了这个系列的排序算法(【十大排序算法系列】冒泡排序)。分析了冒泡的逻辑和优化点,下面来写下快速排序(为什么跳这么快?因为比较走心hhhh)照例给出系列内所有算法的对比。。常见的十大排序算法有:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序等。常见的十大排序算法,时间复杂度和空间复杂度如下图:快速排序快速排序(QuickSort),为什么要叫快速排序呢,因为它真的很快,是对冒泡排序的一些改进,在1960年(管它多少年)被原创 2021-01-04 16:05:59 · 1363 阅读 · 4 评论 -
【十大排序算法系列】冒泡排序
写在前面之前学习了初始的数据结构,数组,链表,树,堆栈,队列等。现在开始更新一些排序算法。常见的十大排序算法有:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序等。常见的十大排序算法,时间复杂度和空间复杂度如下图:此篇从冒泡排序开始,讲解十大排序算法的流程,以及基于Java的代码实现冒泡排序定义冒泡排序是一种简单的内部排序算法,它通过遍历集合,把相邻的两个元素进行两两比较,把大的元素放在右边,如此反复,最终使集合达到有序的目的。由于原创 2021-01-03 23:26:53 · 436 阅读 · 1 评论 -
【牛客题霸-算法篇】实现二叉树先序,中序和后序遍历
上篇博文写了一棵二叉树的构造和其深度优先遍历算法(地址:Java实现构造一棵二叉树及其深度优先算法),下面来写一道题练习一下。这道题是【牛客题霸-算法篇】的一道面试常考题,题目地址:点击跳转题目地址题目如下题目描述分别按照二叉树先序,中序和后序打印所有的节点。示例1输入{1,2,3}返回值[[1,2,3],[2,1,3],[2,3,1]]备注:n≤10^6题解代码如下import java.util.*;/* * 题目提供的节点的数据结构. * pu.原创 2021-01-01 18:18:20 · 244 阅读 · 3 评论 -
Java实现一棵二叉树的构建以及其深度优先遍历算法
Java实现二叉树树这个数据结构在平时的实际开发中其实十分常见,例如,要表示级联关系时,通常使用树来表达。例如,生活中的家族族谱关系,组织架构之间的关系,系统菜单中的级联关系,省市区的一对多关系,业务数据的父子关系等,可见,掌握树的基本数据结构以及如何去应用他,对我们平时的开发是十分有利的。树的定义树是 n 个节点的有限集,这里n>=0。当n=0时,称之为一棵空树。树的特点有且仅有一个特定的称为根的节点。当n>1时,其余的节点可分为 m 个互不相交的有限集,每一个集合本身又是原创 2021-01-01 18:00:22 · 564 阅读 · 2 评论 -
Java手写一个链表的数据结构
Java手写一个链表的数据结构最近开始复习数据结构和算法,记录一下链表是平时开发中也很常遇到的,为了加强自身基础,吾最近开始复习数据结构和算法,下面使用Java实现一个单向的链表记录一下。为什么说是单向的呢,因为链表有很多的种类,单向链表,双向链表,循环链表等。后续再学习。代码如下:/** * 实现链表的数据结构. * * @author lzp * @version 1.0.0 * @date 2020/12/30 15:59 */public class LinkList原创 2020-12-30 17:55:02 · 201 阅读 · 0 评论