数据结构系列
文章平均质量分 62
兴涛
春风化雨,森林拔地而起!
展开
-
字典序及下一个全排列问题
一、字典序概述字典序是一种排序算法。顾名思义,就是按照字典中的英文字母的先后顺序来排序。比如有两个字符串,我们按字符串中每个字符在字典中的排序顺序排序时,这就是字典序:aacaadabfbdfbhz...当第一个字符相等时,比较第二个字符,对于数字也是相同。二、下一个全排列问题字典序是一种排序算法,经典应用之一是求下一个全排列问题。什么是全排列?可以看leetcode上的题目:46.全排列下一个全排列指的是对于当前字符串,下一个比它大的(字典序)排列。比如(123),按字典序,下原创 2022-04-16 10:09:13 · 892 阅读 · 0 评论 -
并查集及其典型题目
一、并查集并查集优秀学习文章.二、题目P1551亲戚import java.util.*;public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); String[] strArr = str.split(" ");原创 2022-04-15 19:03:12 · 126 阅读 · 0 评论 -
单调栈及其对应算法题
单调栈的应用:求解下一个大于x元素或者是小于x元素的位置。在这个过程中,维护的是一个单调栈。算法题目:稍加分析一下就会发现,和上面上说的差不多。做题技巧就是:1、始终要维护一个单调栈,具体看其是递增还是递减;2、分析判断条件,判断出栈和入栈;class Solution { public int[] dailyTemperatures(int[] temperatures) { //单调栈 详细版 int[] result = new int原创 2022-04-12 17:25:23 · 320 阅读 · 0 评论 -
2-3-4树和红黑树
一、2-3-4树树中只能有2、3、4节点,如果超过则分裂。二、2-3-4树和红黑树的关系三、红黑树第3点中,红黑树中都有空的叶子节点,有的红黑树中没有显示叶子节点。第4点中,表明没有连续相同颜色的父子节点。第5点中,表明了黑色节点的平衡。1、左旋和右旋代码实现代码逻辑:三种情况右旋同理:2、红黑树插入总共有6种。在各自的插入情况中,最终都会调整成符合红黑树定义的情况代码实现:上面代码完成了树的插入,还需要对其进行红黑平衡处理红黑平衡代码原创 2022-04-08 21:30:03 · 396 阅读 · 0 评论 -
B树和B+树
B树关键字:结点中的数值。在第四条中:p为指针,k为关键字。p0指向的数值要小于k1关键字,p1指向的数值要大于k1关键字,小于k2关键字,以此类推。在说明中,数据库应用中(B+树)可能在外部节点中存放一些内容。插入细节此时分裂,但是没有双亲(父)节点,所以只好新建一个双亲节点,树高度增加一层;再插入,要插入到叶子节点中此时有双亲节点,不需要增加树的高度此时双亲节点已经四个了,就需要再新建双亲节点,增加树的高度4、删除节点从左原创 2022-04-07 20:36:56 · 1918 阅读 · 0 评论 -
插入排序算法汇总---附JAVA语言实现
插入排序算法汇总一、直接插入排序二、折半插入排序三、希尔排序在介绍算法之前,我先给大家介绍一个很好用的网站,里面的可视化过程可以帮助你更好的理解数据结构和算法VISUALGO.NET: https://visualgo.net/zh.可视化过程:以下内容以算法的思想、特征、实现三方面进行讲解一、直接插入排序基本思想:每次将一个待排序的记录按其关键字大小插入到前面已排好的子序列。类似于打牌的时候,手中扑克牌的排序。特征:适用于顺序存储表和链式存储表;应用于基本有序和数据量小的排序表;原创 2021-07-09 19:12:02 · 96 阅读 · 0 评论 -
BF简单匹配算法和KMP匹配算法
BF和KMP匹配算法一、BF匹配算法二、KMP匹配算法一、BF匹配算法BF模式匹配算法,又称朴素模式匹配算法,简单模式匹配算法,暴力匹配算法。对于字符串,现有一个主串和一个子串,那么子串在主串中的定位操作通常称为串的模式匹配。下面我们来了解一下BF匹配算法。假设有一主串S = “goodgoogle”,子串T = “google”,那么找到子串在主串中的位置,我们直接想到的方法就是如下:1、先将子串从主串的头部开始比较。其中直线符号为相等,闪电符号为不相等。2、遇到不相等的之后,将子串向右滑动原创 2021-05-27 12:05:58 · 1222 阅读 · 0 评论 -
数据结构:栈和队列
栈和队列一、栈1、定义及抽象数据类型2、顺序栈(1)共享栈3、链栈二、队列1、定义及抽象数据类型2、循环队列3、链式队列4、队列扩展三、栈与队列应用一、栈1、定义及抽象数据类型栈是一种操作受限的线性表。栈(Stack)定义:只允许在一端进行插入和删除操作的线性表。栈顶(Top):在栈顶进行插入和删除操作。栈底(Bottom):栈底部,不允许操作。栈的数学性质:n个不同元素进栈,出栈元素不同排列个数为:ADT 栈(Stack)Data 除了第一个和最后一个元素,每一个元素有且只有一个原创 2021-05-21 14:54:53 · 101 阅读 · 0 评论 -
C中结构体、共用体基本概念
C中结构体、共用体基本概念一、结构体基本概念1、简介2、基本操作1、定义结构体类型和结构体变量2、引用结构体变量3、初始化结构体变量3、typedef定义类型的作用二、共用体基本概念1、简介2、基本操作1、定义共用体类型和变量2、引用和初始化3、注一、结构体基本概念1、简介结构体属于一种构造数据类型(数组也是构造数据类型,和基本数据类型并列)。结构体不同于数组的是,若是一组不同类型的数据,则使用结构体,而不能用数组,因为数组中的数据必须是相同的数据类型。结构体是由若干个成员组成,而每个成员既可以是一个原创 2021-05-12 17:06:11 · 445 阅读 · 1 评论 -
C指针基本概念
C指针基本概念一、基本概念1、简介2、基本操作1、指针变量的声明2、指针变量的初始化3、指针变量的引用4、指针变量的运算5、注意事项一、基本概念1、简介在计算机中,所有的数据都是存放在存储器中,一般把存储器的一个字节称为一个内存单元,不同的数据类型占有不同的内存单元。为了正确访问这些单元就需要为每个内存单元编号,内存单元的编号也称为地址。根据地址就可以找到这个内存单元,所以将地址称为指针。内存单元的指针和内存单元中存储的内容是两个不同的概念。如图:字符变量C,其内容为’K‘,C占用了011A号单原创 2021-05-12 11:13:14 · 279 阅读 · 0 评论 -
数据结构之线性表
数据结构之线性表总结一、线性表1、定义及特点2、抽象数据类型3、表的抽象数据类型二、顺序表1、定义及特点2、操作实现三、链表1、定义及特点2、单链表操作实现3、单链表扩展此博客只对线性表进行框架总结,对细点不做赘述,复习时可查阅图书。一、线性表1、定义及特点线性表是一种逻辑结构,表示元素之间一对一的相邻关系。它的标准定义是:线性表(List):零个或多个数据元素的有限序列线性表的三个基本特点:元素是相同的数据类型元素数量有限它是序列。也就是说元素之间有某种顺序,也就是我们所说的元素之间原创 2021-04-23 17:02:06 · 182 阅读 · 0 评论