自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常用算法联系---KMP算法提高字符串匹配效率

package commonlyalgorithm.kmp;import java.util.Arrays;public class KMPAlgorithm { public static void main(String[] args) { String str1 = "BBC ABCDAB ABCDABCDABDE"; String str2 = "ABCDABD"; //int match = volienceMatch(str1,

2020-09-10 15:35:01 261

原创 常用算法练习---贪心算法

package commonlyalgorithm.greedalgorithm;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Map;/** * 贪心算法 * * 可以用来求解最少元素覆盖最大面积之类的问题 * 再次举例计算选用最少的电台达到要求覆盖的城市全部覆盖的目标 */public class GreedAlgorithm {

2020-09-10 15:33:21 110

原创 常用算法联系---使用动态规划解决0-1背包问题

package commonlyalgorithm.dynamic;import java.util.Arrays;/** * 使用动态规划算法解决背包问题 * 背包问题: 向一个能装入固定重量的背包中放入几样价值和重量都不相同东西 要求放入的东西总价值最大 求应该怎么放(每件物品只有一件 即 0-1背包) * * 核心思想: 用一个二维数组来表示一个表 横纵坐标分别为物品和背包可容纳重量 右下角的单元格即为最大值 * 优化思路: 填表或许可以从右往左填? 二维数组是否可以使用

2020-09-10 15:32:16 143

原创 常用算法练习---分治算法解决汉诺塔问题

package commonlyalgorithm.divide_and_conquer_algorithm;/** * 使用分治算法解决汉诺塔问题 */public class Hanoitower { public static void main(String[] args) { dac(2, 'A', 'B', 'C'); } /** * 目标: 将所有元素从A柱移动到C柱 要求编号大的不能放在编号小的上面 * @para

2020-09-10 15:31:08 141

原创 常用算法练习---二分查找(非递归)

package commonlyalgorithm.binarysearchnorecursion;import java.util.ArrayList;import java.util.List;/** * 二分查找 非递归 * 要求带查询的数组为有序数组 */public class BinarySearch { public static void main(String[] args) { int[] arr = {1, 3, 5, 6, 6, 6,

2020-09-10 15:29:42 90

原创 数据结构与算法练习---图的创建与遍历(深度优先/广度优先)

package graph;import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;/** * 创建图 */public class Graph { private ArrayList<String> vertexList; //储存顶点元素的集合 private int[][] edges; //储存边使用的二维数组 private int ed

2020-09-10 15:27:54 226

原创 数据结构与算法练习---平衡二叉搜索树创建练习代码

package avltree;/** * 平衡二叉搜索树 AVL树 * * 首先应当是一颗二叉排序树(二叉搜索树) * 要求该树的左右两颗子树高度的绝对值之差不大于1 * * 当增加或删除元素时通过左旋、右旋、双旋按操作使该树维持在平衡二叉树的状态 * */public class AVLTreeDemo { public static void main(String[] args) { //int[] arr = {4, 3, 6, 5, 7, 8}

2020-09-10 15:26:00 102

原创 数据结构与算法练习---二叉排序树增删查练习代码

package binarysorttree;/** * 二叉排序树增删查练习代码 */public class BinarySortTreeDemo { public static void main(String[] args) { int[] arr = {7, 3, 10, 12, 5, 1, 9, 2}; BinarySortTree binarySortTree = new BinarySortTree(); for (int

2020-09-10 15:24:15 111

原创 数据结构与算法练习---哈希表构建、使用练习

哈希表构建、使用练习package hashtable;import java.util.Objects;import java.util.Scanner;/** * 哈希表构建、使用练习 */public class HashTab { //声明元素为链表的数组 private EmpLinkedList[] empLinkedArray; //记录数组长度 private int size; //构造器 public HashTab(i

2020-09-10 15:22:32 156

原创 数据结构与算法练习---霍夫曼编码进行字符串和文件的压缩和解压

使用霍夫曼编码进行字符串和文件的压缩和解压实验解压文件时出现错误 未解决package huffmancoding;import jdk.internal.org.objectweb.asm.tree.TryCatchBlockNode;import sun.misc.OSEnvironment;import java.io.*;import java.util.*;/** * 将字符串保存为Huffman编码 * huffman编码是以霍夫曼树为基础的可变字长的前缀编码,也可以

2020-09-10 15:20:15 289

原创 数据结构与算法练习---将数组中的数据生成霍夫曼树代码

package tree;import java.util.ArrayList;import java.util.Collections;import java.util.List;/** * 霍夫曼树创建练习, * 霍夫曼树:叶子节点带权路径之和最小的树称为霍夫曼树,也称最优二叉树 * 带权路径:节点权值与路径的乘积 */public class HuffmanTree { public static void main(String[] args) { i

2020-08-24 13:47:07 118

原创 数据结构与算法练习---线索化二叉树及其遍历代码

package tree;public class ThreadedBinaryTreeDemo { public static void main(String[] args) { HeroNodeX root = new HeroNodeX(1 , "tom"); HeroNodeX node2 = new HeroNodeX(3 , "jerry"); HeroNodeX node3 = new HeroNodeX(6 , "sam");

2020-08-24 13:45:12 141

原创 数据结构与算法练习---大顶堆、小顶堆及堆排序代码

package tree;import sortalgroithm.BubboSort;import java.util.Arrays;/** * 堆排序 升序排序使用大顶堆 降序排序使用小顶堆 * 核心思想 将一个无序二叉树调整为大顶堆/小顶堆 取出根节点,对剩余的数组继续以上操作,最后即得有序数列 */public class HeapSort { public static void main(String[] args) { //int[]

2020-08-24 13:43:30 200

原创 数据结构与算法练习---二叉树遍历、查找/删除、新增练习代码

package tree;import javax.jws.Oneway;/** * 二叉树遍历、查找/删除、新增练习 */public class BinaryTree { //根节点 private HeroNode root; //设置根节点 public void setRoot(HeroNode root){ this.root = root; } //前序遍历 public void preOrder(){

2020-08-24 13:41:40 80

原创 数据结构与算法练习---二分查找及其拓展代码

package searchalgroithm;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class BinarySearch { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};//

2020-08-24 13:38:45 106

原创 数据结构与算法练习---七种常见的排序算法代码实现

package sortalgroithm;import java.util.Arrays;/** * 七种常见的排序算法 * (还未学习树结构,堆排序暂未实现) * 一、冒泡排序 效率低 * 二、交换排序 效率低 * 三、插入排序 效率较低 比上面两种快 * 四、希尔排序 效率较高 * 五、快速排序 效率较高 * 六、归并排序 效率较高 * 七、基数排序 效率较高 但耗费内存空间较大 * * 各种排序算法都有各自的适合的使用场景,分情况选取 * */p

2020-08-10 14:11:46 140

原创 使用回溯与递归算法解决八皇后问题(java)

package recursion;import java.util.ArrayList;/** * 解决八皇后问题 * 问题:将8个棋子放在一个8*8的棋盘中 要求不能在同一行,不能在同一列,不能在同一斜线上,问共有多少种放法 */public class Queen8 { //用来计数 static int count; //指定棋盘大小 int max = 8; //声明数组,用来模拟棋盘,并储存结果数据 int[] array

2020-07-15 15:17:05 66

原创 数据结构与算法练习---求n的阶乘、迷宫寻路代码(使用递归调用找到可行的路径,与寻路策略有关,未找到最短路径)

package recursion;/** * 递归调用练习 */public class RecursionTest { public static void main(String[] args) { System.out.println(getNumber(8)); //获得一个迷宫 其中1表示墙,0表示可以走的格子,求从左上角走到有下角的路径 int[][] map = getMap(); for (int i =

2020-07-15 15:13:32 131 1

原创 数据结构和算法练习---中缀表达式转后缀表达式以及逆波兰计算器的实现代码(不含小数的计算)

package easynotation;import java.util.ArrayList;import java.util.List;import java.util.Stack;public class PolandNonation_V1 {public static void main(String[] args) { //中缀表达式 目标 将其转为后缀表达式 1,2,3,+,4,*,+,5,- //先将其转为list集合中的元素方便遍历 String in

2020-07-15 15:08:03 83

原创 数据结构和算法练习---环形链表与Josephu问题的解决

Josephu问题:有n个小孩围成一圈,从第k个小孩开始从1报数,其中报数为m的小孩离开队伍,然后在从该位置开始报数,报道为m的再次离开队伍,然后再次重复次过程, 求离开队伍的小孩的编号序列。使用环形链表类比这类问题的实际情况,再依次分析出循环条件,重点在于增加辅助指针helper来指向first之前的一个元素,以此来简化代码,最后代码实现。代码如下:package linkedlist...

2020-01-08 16:12:55 124

原创 数据结构和算法练习---双向链表的CRUD操作代码

双向链表比单项链表多了一个指向前一个元素的指针,所以双向链表可以倒序遍历。里一个区别时删除元素时单向链表必须定位到要删除元素的前一个元素处才能删除目标元素,而双向链表可以实现节点的自我删除。还有一个区别是在有序添加数据时向尾节点添加数据和在链表中间添加数据在单向链表中时相同的操作,在双向链表中必须加以区分。代码如下:```javapackage linkedlist;public ...

2020-01-07 16:55:51 156

原创 数据结构与算法练习---单向链表相关代码

单向链表物理上在内存中是分散的,占用的不是连续的内存空间且单向链表只能正向遍历。遍历单向链表需要用到临时变量temp来辅助遍历。代码如下:```javapackage linkedlist;import java.util.Stack;/** * 学习单向链表的实现 * @author Administrator * */public class LinkedListDe...

2020-01-07 10:53:46 111

原创 数据结构与算法练习---环形队列代码

用数组来实现一个环形队列,关键在于找出判断队列是空还是满状态的条件和利用头指针front和尾指针rear来计算有效元素个数的公式。设置front为头指针指向第一个元素,初始值为0.设置rear为尾指针指向最后一个元素的后一个位置,初始值为0.maxSize为用来形成环形队列的数组的大小。队列已满的条件:(rear + 1) % maxSize == front队列为空的条件:rear =...

2020-01-07 10:10:01 284

空空如也

空空如也

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

TA关注的人

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