![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
dandeseed
知足且上进,温柔且坚定
展开
-
KMP算法与贪心算法
KMP算法首先要构建部分匹配表向后移动的位数 = 已经匹配的个数 - 对应的部分匹配值原创 2021-05-11 11:17:48 · 1578 阅读 · 1 评论 -
分治与动态规划算法
变量是物品的种类cpackage com.atguigu.dynamic;public class KnapsackProblem { public static void main(String[] args) { // TODO Auto-generated method stub int[] w = {1, 4, 3};//物品的重量 int[] val = {1500, 3000, 2000}; //物品的价值 这里val[i] 就是前面讲的v[i] int ...原创 2021-05-06 09:55:38 · 106 阅读 · 0 评论 -
图
import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;public class Graph { public static void main(String[] argv){// GraphList graph = new GraphList(5);// String[] strs = {"A","B","C","D","E"};// ...原创 2021-04-30 10:07:06 · 95 阅读 · 0 评论 -
哈夫曼树,二叉排序树,平衡二叉树
平衡二叉树首先生成一个二叉排序树左旋转右旋转双旋转:多叉树B树原创 2021-04-27 16:51:23 · 164 阅读 · 0 评论 -
堆排序
大顶堆:小顶堆:堆排序思想:如何构成一个大顶堆:// 堆化的具体过程:从最后一个非叶子节点开始:比较子节点中最大的数,然后让该节点置为最大值,子节点置为之前的数 int temp = array[index]; // 循环遍历子树 for(int k=index*2+1;k<length;k = k*2+1){ // 找到子节点最大数的索引 if(k+1<length&am.原创 2021-04-18 11:07:24 · 81 阅读 · 0 评论 -
树结构
三种数据结构的特点;数组的优缺点:链式存储的优缺点:二叉树:二叉树二叉树的遍历说明二叉树的查找二叉树删除节点(简单版)顺序存储二叉树将数组转化为二叉树,顺序存放数组线索化二叉树...原创 2021-04-16 09:19:27 · 77 阅读 · 0 评论 -
查找算法
线性查找用于查找无序数组二分查找用于查找有序数组public static int binarySearch(int[] arr, int left, int right, int findVal) { System.out.println("二分查找被调用~"); // 当 left > right 时,说明递归整个数组,但是没有找到 if (left > right) { return -1; } int mid = (left + right) / 2;原创 2021-04-13 17:40:57 · 62 阅读 · 0 评论 -
排序算法
排序算法的介绍:时间复杂度对比:要求掌握8种排序算法:原创 2021-04-11 10:29:51 · 130 阅读 · 0 评论 -
递归(Recursion)的应用
递归调用机制图解:递归可以解决什么样的问题?1)各种数学问题如:8皇后问题,汉诺塔问题,阶乘问题,迷宫问题,球和篮子问题(google编程大赛)2)各种算法中也会用到递归,比如快速排序,归并排序,二分查找,分治算法等3)将用栈解决的问题,使用代码比较简单球和篮子问题:1. 第一次尝试:垃圾错了,写的乱七八糟。没有一点思路public class RecursionTest { public static void main(String[] args) { int原创 2021-04-10 20:13:08 · 298 阅读 · 0 评论 -
队列,链表和栈(中缀转后缀)
文章目录环形队列环形队列思路:环形队列代码实现:链表:单链表双向链表环形链表栈数组模拟栈使用链表实现一个栈最重要的是队列,链表和栈的使用,而不是如何创建:链表的应用场景:栈的应用场景前缀和后缀表达式环形队列环形队列思路:需要两个指针:front指向队列的起始元素,rear指向数组的最后一个元素的后一个位- 置,因为需要空出一个空间作为约定。(空一个的原因是区分队空和队满)判断队列是否已经满了:(rear+1)%maxSize == front判断队列是否为空:rear==front时为空。环形原创 2021-04-09 15:16:25 · 236 阅读 · 0 评论