自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 数据结构与算法(十五)KMP算法

KMP算法原理:当下标为5的字符不匹配时, 因为知道前五个字符的前缀A A 和后缀A A其实是一样的, 所以直接从模式串的第三位开始比较,不用回溯到开始的下一位,减少比较的次数。怎么知道将模式串移动到哪个位置呢?就需要借助前缀后缀表(部分匹配表), 前缀表记录了字符串前后缀最大相等的值的长度对于模式串 AABAADA 没有前后缀 -> 0AA 前缀 A 后缀 A, 最大相等值A,长度为1 -> 1AAB 前缀 A, AA; 后缀B, AB,没有相等的值 -> 0A

2021-03-15 23:31:03 231

原创 数据结构与算法(十四)背包问题及记录种类

问题描述:一个容量为V的背包,现在有N件商品(相同的商品可以随意取为完全背包,最多只能取一次为01背包),每件商品的重量是w1,价值是v1,请问,这个背包所能容纳的最大价值是多少?package algorithm;public class KnapsackProblem { public static void main(String[] args) { int[] value = {1000, 3000, 5000, 3500}; int[] weigh

2021-03-14 00:23:17 119

原创 数据结构与算法(十三)分治算法解决汉诺塔问题

package algorithm;public class HanoiTower { public static void main(String[] args) { hanoi(5, 'A', 'B', 'C'); } /** * @param num 待移动的盘子数量 * @param a 起始柱子 * @param b 辅助柱子 * @param c 目标柱子 */ public

2021-03-13 22:10:46 104

原创 数据结构与算法(十二)构建平衡二叉树(左旋、右旋)

package tree;public class AVLTree { private static TreeNode root; public static void inOrder() { if (root != null) { root.inOrder(); } else { System.out.println("Tree is empty"); } } publi

2021-03-12 18:54:44 210

原创 数据结构与算法(十一)二叉排序树的增删

package tree;public class BinarySearchTree { private static TreeNode root; public static void inOrder() { if (root != null) { root.inOrder(); } else { System.out.println("Tree is empty"); } }

2021-03-12 16:52:58 55

原创 数据结构与算法(十)霍夫曼编码

霍夫曼编码package algorithm;import java.util.*;public class HuffmanEncode { public static void main(String[] args) { String str = "i like like like algorithm"; byte[] res = huffmanZip(str); } //压缩数据 private static byte

2021-03-12 13:51:51 155

原创 数据结构与算法(九)排序

排序算法比较算法时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性冒泡排序O(n^2)O(n^2)O(n)O(1)稳定选择排序O(n^2)O(n^2)O(n^2)O(1)不稳定插入排序O(n^2)O(n^2)O(n)O(1)稳定希尔排序O(nlogn)O(n^2)O(n)O(1)不稳定快速排序O(nlogn)O(n^2)O(nlogn)O(logn)不稳定归并排序O(nlogn

2021-03-11 16:34:00 46

原创 数据结构与算法(八)二叉树的遍历

前序遍历:先遍历父节点,再遍历左节点,最后遍历右节点中序遍历:先遍历左节点,在遍历父节点,最后遍历右节点后序遍历:先遍历左节点,再遍历右节点,最后遍历父节点针对以下二叉树进行前序遍历、中序遍历、后序遍历public class BinaryTreeTraverse { public static void main(String[] args) { Node root = createTree(); BinaryTree tree = new Bina.

2021-03-10 22:32:06 240

原创 数据结构与算法(七)二分查找与插值查找

package sort;import java.util.Arrays;public class Search { public static void main(String[] args) { int arr[] = new int[100]; for (int i = 0; i < 100; i++) { arr[i] = i + 1; } int index = binarySear

2021-03-10 14:42:21 57

原创 数据结构与算法(六)递归回溯解决八皇后问题

八皇后问题概述在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,有多少种摆法?public class EightQueensProblem { static int length = 8;//定义棋盘的大小 static int count = 0;//计算总共有多少种解法 /* 假设array = [0 4 7 5 2 6 1 3],意思是第一个皇后摆在第一行第0+1=1列 第二个皇后

2021-03-06 17:39:07 84

原创 数据结构与算法(五)逆波兰(后缀表达式)计算器的简单实现

中缀转后缀表达式思路新建一个栈辅助转换表达式遍历中缀表达式:如果是数字直接加入表达式尾端遇到括号时:(1)左括号:将左括号压入栈中,继续遍历(2)右括号:将栈中遇到左括号之前的符号依次添加到表达式尾端。最后pop出该左括号,继续遍历。遇到操作符时:(1)如果栈顶操作符为左括号,或者栈中没有元素则直接压入该操作符,继续遍历(2)如果操作符优先级高于栈顶操作符,直接压入该操作符,继续遍历(3)如果该操作符优先级低于或等于栈顶操作符,将栈顶操作符取出添加至表达式尾端,重复3。当遍历完成

2021-03-06 15:29:06 58

原创 数据结构与算法(四)循环链表解决约瑟夫问题

编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。public class JosephusProblem { public static void main(String[] args) { int n = 5; int m = 2; solution(n, m); }.

2021-03-05 17:55:30 78

原创 数据结构与算法(三)简单实现带头节点的LinkedList

public class MyLinkedList<E> { private Node head; private class Node{ E item; Node next; } public MyLinkedList(){ head = new Node(); } public void insert(E item){ Node node = new Node();

2021-03-05 15:50:53 97

原创 数据结构与算法(二)用数组实现队列

public class ArrayQueue { int maxSize;//actual capacity is maxSize - 1, make an empty position as interval int front; // point to the first position int rear;//point to the position after the last position int[] array; public ArrayQue

2021-03-04 16:19:48 71 1

原创 数据结构与算法(一)稀疏数组

数据结构与算法(一)稀疏数组应用场景放一个数据中大部分元素是0,或者同一个值的数组时,可以使用稀疏数组来保存该数组处理方式记录数组一共有几行几列,有多少不同的值2.把具有不同值的元素的行列以即值记录在小规模的数组中。例子代码public class SparseArray { public static void main(String[] args) { int[][] chessArrayOld = new int[6][7]; c

2021-03-04 14:08:27 72 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除