
数据结构与算法
算法
jakiechaipush
小白进化中
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线段树数据结构
介绍看这篇博客。原创 2023-09-06 16:12:10 · 104 阅读 · 0 评论 -
第一个错误的版本
leetcode刷题日记:第一个错误的版本原创 2022-03-01 10:27:56 · 87 阅读 · 0 评论 -
剑指offer 19. 正则表达式匹配
动态规划原创 2023-05-15 19:36:51 · 605 阅读 · 1 评论 -
ST表(转载自其它博主)
ST表:https://zhuanlan.zhihu.com/p/123360481原创 2023-09-06 15:42:47 · 162 阅读 · 0 评论 -
【rush】单链表的增、删、改、查操作
注意代码中的注释中的指针并非与c++以及c中的指针一样,Java中是不存在指针这个概念的,之所以将其称为指针是为了加深对链表这一重要数据结构的理解。package chailong;import java.util.Scanner;class Point //结点类{ Point next; //指针域 int data; ...原创 2019-09-16 22:22:05 · 427 阅读 · 0 评论 -
用一个数组实现两栈空间的共享
package chaolong;import java.util.Scanner;public class Ak{ private int[] stack; //栈数据成员 private int m1; //栈1的位置指针 private int m2; //栈2的...原创 2019-09-18 16:02:46 · 466 阅读 · 0 评论 -
手工计算next数组和nextval数组方法详述
内容属于个人总结,辩证使用原创 2021-08-28 17:22:17 · 209 阅读 · 0 评论 -
二叉树遍历算法的递归与非递归代码实现
#include<iostream>using namespace std;#include<queue>#include<stack>//二叉树的链式存储结构 typedef struct BitNode{ int data; //数据域 struct BitNode *lchild,*rchild; }BiTNode,*BiTree;BiTree creatBitTree(){ BiTree index; BiTNode* node1原创 2021-08-30 17:29:08 · 146 阅读 · 0 评论 -
java实现栈数据结构的代码
package chaolong;import java.util.Scanner;public class Ak{ private int[] stack; //栈数据成员 private int m; //栈的位置指针 public Ak(int a) { stack=new int[a]; ...原创 2019-09-18 15:36:50 · 346 阅读 · 0 评论 -
图的深度优先遍历算法java实现
深度优先遍历,也称为深度优先搜索,简称为DFS。它的实现原理为,它从图中某个顶点出发,访问此顶点,然后从v的未被访问的邻接点出发深度优先遍历图,直至图中所有和V有路径相通的顶点都被访问到。代码如下:import java.util.Scanner;class Point{ //这个类用于邻接表,因为每一个顶点在邻接表中都存在一个指向其它顶点的指针域所以要将指针域和数据域封装成一个具体的类...原创 2019-12-26 10:43:37 · 607 阅读 · 1 评论 -
KMP算法C++实现
KMP算法C++实现#include "datatype.h" void get_next(Hstring hstring,int next[]) { int i=0; next[0]=-1; int j=-1; while(i<hstring.length) { if(j==-1||hstring.ch[i]==hstring.ch[j]) { ++i; ++j; next[i]=j;原创 2021-08-27 15:41:40 · 600 阅读 · 0 评论 -
静态链表的java实现
package chailong;import java.util.Scanner;class Pointt{ int data; //数据域 int cur; //下标域 public Pointt() { this.data=-1; this.cur=-1; }}public class Staticlinklist{ static Pointt[]...原创 2019-09-17 23:05:30 · 365 阅读 · 0 评论 -
二叉树的三种遍历的三种方法(java实现)
创建二叉树的代码(左孩子的值要小于双亲节点,右孩子的值要大于双亲结点):class Tree //节点类{ Tree left; //指向左孩子节点 Tree right; //指向右孩子节点 int data; public Tree() {}...原创 2019-11-11 21:17:18 · 1949 阅读 · 0 评论 -
无向图图的两种数据储存结构的C++代码的实现
无向图图的两种数据储存结构的C++代码的实现(都是无向图的实现)一、邻接矩阵#include<iostream>using namespace std;template <typename T>class dd{private: T data; //顶点数据域public: dd(){} dd(T data1) :dat...原创 2019-05-28 23:27:43 · 1841 阅读 · 0 评论 -
栈的应用之数制转换C++实现
#include<iostream>#include<stack>using namespace std;//栈的应用,数制转换int main(){ stack<int> mystack; cout<<"input number:"<<endl; int a; int b=0; //用来保存余数 cin>>a; while(a>0) { b=a%2;.原创 2021-08-22 18:24:30 · 382 阅读 · 0 评论 -
动态规划算法做题思路
20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。动态规划的应用极其广泛,包括工程技术、经济、工业生产、军事以及自动化控制等领域,并在背包问题、生产经营问题、资金管理问题、资源分配问题、最短路径问题和复杂系统可靠性问题等中取得了显著的效果。还是要回到第一点,要理解dp数组所表示的含义,以及dp数组下标的含义,然后再进行初始化。最重要的是理解dp数组所表示的含义,以及dp数组下标的含义。仔细分析题目,得出递推关系。原创 2023-05-12 17:14:16 · 730 阅读 · 0 评论 -
并查集算法
并查集原创 2023-05-12 16:29:23 · 1335 阅读 · 0 评论 -
深度优先搜索(DFS)
深度优先搜索是一种常见的图搜索算法,它可以用于寻找图中从起点到终点的路径或遍历整个图。该算法的主要思想是从起点开始,尽可能深地搜索每个可达节点,直到到达目标节点或所有可达节点都被访问为止。下面用下图来理解DFS的设计思想:从0节点出发,我们现在有三个遍历选择可以遍历1节点、2节点或者3节点我们选择遍历的下一个节点为3节点遍历完3节点我们开始遍2节点遍历完2节点我们发现下面可以遍历0节点和1节点,但0节点我们已经标记遍历过了所以只能遍历1节点。原创 2023-05-10 20:15:26 · 171 阅读 · 0 评论 -
二分查找算法
二分查找又称折半查找、二分搜索、折半搜索等,是一种在静态查找表中查找特定元素的算法。所谓静态查找表,即只能对表内的元素做查找和读取操作,不允许插入或删除元素。使用二分查找算法,必须保证查找表中存放的是有序序列(升序或者降序)。换句话说,存储无序序列的静态查找表,除非先对数据进行排序,否则不能使用二分查找算法。原创 2023-05-10 19:09:07 · 671 阅读 · 0 评论 -
搜索插入的位置
int searchInsert(int* nums, int numsSize, int target){//二分找并插入元素int low=0;int high=numsSize-1;int mid=0;while(low<=high) { mid=(low+high)/2; if(nums[mid]<target) { low=mid+1; } else if(nums[mid]>target) { .原创 2022-03-01 11:15:52 · 130 阅读 · 0 评论 -
二分查找(leetcode704)
给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以假设 nu...原创 2022-03-01 10:03:08 · 132 阅读 · 0 评论 -
Prim算法C++实现
cv直接运行#include<iostream>#include<queue>using namespace std;#define MaxVertexNum 100#define INFINITY INT_MAX //最大值无穷 typedef int VertexType; //定义顶点的数据类型原创 2021-09-08 17:00:49 · 477 阅读 · 0 评论 -
堆排序算法
堆排序算法介绍:堆排序算法:是指利用堆这种数据结构所设计的一种排序算法堆介绍:堆是一个数组,它可以被看成一个近似的**完全二叉树**,数上的每一个结点对应于数组中的一个元素。所以我们可以将堆理解为将一个完全二叉树按照从上到下,从左到右将元素逐个放置于一个一维的数组,而这个数组我们就可以称为堆。如下:堆的种类:*堆分为两种分别叫做最大堆和最小堆,所谓最大堆就是除了根结点以外的所有结点i都要满足完全二叉树中的双亲结点要大于任何一个孩子结点,而最小堆恰好相反。下面我使用的是最大堆来研究堆排序算原创 2020-11-09 18:43:12 · 304 阅读 · 0 评论 -
迪杰斯特拉算法代码详解(java)
迪杰斯特拉这是一个按路径长度递增次序产生最短路径的算法。具体代码如下:/*1*/import java.util.Scanner;/*2*/class Graph{ /*3*/ int[][] edge; //图的邻接矩阵 /*4*/ int numPoint; //图中顶点数目 ...原创 2020-01-05 11:17:59 · 939 阅读 · 0 评论 -
最小生成树生成算法-克鲁斯卡尔算法(kruskal)的java实现
普里姆算法是以顶点为起点来逐点找到各个顶点上的最小权值的边来构建最小生成树的。换一个思路我们也可以直接以边为目标取构建,因为权值是在边上。直接找最小权值的边来构建生成树也是很自然的想法,但是以边为基本来构建最小生成树的时候需要考虑是是否构成环路的问题。...原创 2019-12-29 17:41:45 · 400 阅读 · 0 评论 -
最小生成树的生成算法-普里姆(prim)算法的java实现
import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;//用邻接矩阵的方法构建图数据结构class Graph{ //图类 int[] point; //顶点矩阵 int[][] edge; ...原创 2019-12-26 16:17:56 · 243 阅读 · 0 评论 -
广度优先遍历算法的java实现
广度优先遍历算法,又称为广度优先搜索,简称BFS。实现代码如下:import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;class Point{ //这个类用于邻接表,因为每一个顶点在邻接表中都存在一个指向其它顶点的指针域所以要将指针域和数据域封装成一个具体的类 int data; Ed...原创 2019-12-26 11:32:07 · 1260 阅读 · 0 评论 -
赫夫曼树java实现
赫夫曼编码是这一种最基本的压缩编码方法从树中一个节点到另一个节点之间的分支构成两个节点之间的路径,路径上的分支数目称为路径长度树的路径长度就是从树根到每一个节点的路径长度之和节点的带权路径长度为该节点到树根之间的路径长度与节点上权的乘积带权路径长度WPL最小的二叉树称作赫夫曼树...原创 2019-12-07 09:08:14 · 143 阅读 · 0 评论 -
八大排序算法以及java实现(下)
冒泡排序算法思想:(1)将序列当中的左右元素,依次比较,保证右边的元素始终大于左边的元素(第一轮结束后,序列最后一个元素一定是当前序列的最大值)(2)对序列当中剩下的n-1个元素再次执行步骤1(3)对于长度为n的序列,一共需要执行n-1轮比较(l利用while循环可以减少执行次数)java代码实现:import java.util.Arrays;public class M...原创 2019-11-04 22:38:11 · 259 阅读 · 0 评论 -
八大排序算法以及java实现(上)
直接插入排序:算法思想:将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比以排序的元素小则交换,直到全部都比较过。java实现直接插入排序:import java.util.Arrays;public class Main{ public static void main(String[] args) { int[] a=new int[] {5,7,3...原创 2019-11-03 17:25:49 · 262 阅读 · 0 评论 -
改进后的KMP算法的java实现
import java.util.Scanner;/* * 改良后的KMP算法 * 解决了普通kmp算法依然存在的一些问题 */public class BetterKmp { static int[] nextval=new int[100]; //next数组 public static void get_nextval(Str...原创 2019-10-29 17:47:25 · 504 阅读 · 0 评论 -
普通KMP算法的java实现
import java.util.Scanner;/* * Kmp算法 */public class Kmp { static int[] next=new int[100]; //next数组 public static void get_next(String a) ...原创 2019-10-28 20:26:22 · 276 阅读 · 0 评论 -
逆波兰表达式
import java.util.Scanner;/* * 逆波兰表达式的转换与计算 */enum Symbol //java枚举类{ left_parenthesis('(',1),right_parenthesis(')',1),multiplication_sign('*',2),devide('/',2) ,plus_...原创 2019-10-18 11:13:05 · 311 阅读 · 0 评论