【基础学习-数据结构和算法】
【基础学习-数据结构和算法】
我一直在流浪
这个作者很懒,什么都没留下…
展开
-
Data Structures-08:单向环形链表(约瑟夫问题)
文章目录1. 创建与遍历单向环形链表2. 创建一个环形链表的出栈队列小孩节点类://创建一个节点类,Boy类class Boy{ private int no; private Boy next;//指向下一个节点 public Boy(int no) { this.no = no; } public int getNo() ...原创 2020-01-25 16:56:03 · 264 阅读 · 0 评论 -
Data Structures-07:双向链表
代码://创建一个双向链表的类class DoubleLinkedList{ private HeroNode head = new HeroNode(0,"",""); //返回头结点 public HeroNode getHead(){ return head; } //遍历双向链表 public void list(...原创 2020-01-25 15:45:06 · 150 阅读 · 0 评论 -
Data Structures-03:稀疏数组
代码实现:public class SparseArray { public static void main(String[] args) { //创建一个原始的二维数组11*11 //0表示没有棋子,1表示黑子,2表示蓝子 int chessArr1[][] = new int[11][11]; chessArr1...原创 2020-01-22 22:11:26 · 194 阅读 · 0 评论 -
Data Structures-04:队列
文章目录1.数组模拟队列2.数组模拟环形队列1.数组模拟队列i数组模拟队列代码:class ArrayQueue{ private int maxSize; private int front; private int rear; private int[] arr; //创建队列的构造器 public ArrayQueue(int a...原创 2020-01-23 14:00:50 · 133 阅读 · 0 评论 -
Data Structures-02:动态数组
代码实现动态数组:public class ArrayList<E> { private int size; private E[] elements; private static final int DEFAULT_CAPACITY = 10; private static final int ElEMENT_NOT_FOU...原创 2020-01-22 12:11:05 · 622 阅读 · 0 评论 -
Data Structures-01:复杂度
文章目录1. 斐波那契数列2. 大O表示法3. 线性表1. 斐波那契数列public class Main { public static void main(String[] args) { System.out.println(fib2(70)); } /** * 0 1 1 2 3 5 8 13 */ public s...原创 2020-01-20 20:33:40 · 197 阅读 · 0 评论 -
Data Structures-06:单链表面试题
1. 单链表中有效节点的个数//获取到单链表中的有效节点个数(不包括头节点)public static int getlength(HeroNode head){ if(head.next==null){ return 0; } int length = 0; HeroNode cur = head.next; while(cur!=n...原创 2020-01-25 14:20:02 · 118 阅读 · 0 评论 -
Data Structures-05:单链表(节点的增删改查)
节点实体类:class HeroNode{ public int no; public String name; public String nickName; public HeroNode next;//指向下一个节点 //构造器 public HeroNode(int no,String name,String nickName){ ...原创 2020-01-23 22:26:26 · 312 阅读 · 0 评论 -
【数据结构19】冒泡排序
文章目录1. 冒泡排序介绍2. 冒泡排序规则3. 基本冒泡排序实例1. 冒泡排序介绍2. 冒泡排序规则3. 基本冒泡排序实例冒泡排序原理:ublic class BubbleSort { public static void main(String[] args) { int arr[] = {3,9,-1,10,-2}; //第一趟排序就...原创 2019-12-29 13:34:05 · 250 阅读 · 0 评论 -
【数据结构21】插入排序
1. 插入排序介绍2. 插入排序思想3. 代码实现插入排序推导过程:public class InsertSort { public static void main(String[] args) { int[] arr = {101,34,119,1}; System.out.println("插入前:"+ Arrays.toString(...原创 2019-12-29 16:25:18 · 188 阅读 · 0 评论 -
【数据结构08】从尾到头打印单链表(百度面试题)
//方法:利用栈这个数据结构将各个节点压如到栈中,利用栈的现金后出的特点,实现逆序打印 public static void reversePrint(HeroNode head){ if(head.next==null){ return; } //创建一个栈,将各个节点压入栈 Stack&l...原创 2019-12-25 14:36:00 · 255 阅读 · 0 评论 -
【数据结构15】递归
1.递归调用机制原创 2019-12-28 09:12:41 · 117 阅读 · 0 评论 -
【数据结构44】二分查找算法(非递归方式)
public class BinarySearchNoRecur { public static void main(String[] args) { int arr[] = {1,3, 8, 10, 11, 67, 100}; int index = binarySearch(arr,3); System.out.println(inde...原创 2020-01-08 14:52:39 · 317 阅读 · 0 评论 -
【数据结构48】贪心算法
public class GreedyAlgorithm { public static void main(String[] args) { //创建广播电台,放入到map中 HashMap<String, HashSet<String>> brodecasts = new HashMap<>(); ...原创 2020-01-09 14:48:26 · 236 阅读 · 0 评论 -
【数据结构04】单链表在指定位置添加节点
1. 链表介绍2. 单链表的应用实例2.1在添加英雄时,直接添加到链表的尾部思路分析:辅助变量遍历的细节分析:public class SingleLinkedListDemo { public static void main(String[] args) { //先创建几个节点 HeroNode heroNode1 = new Her...原创 2019-12-24 16:46:32 · 2531 阅读 · 2 评论 -
【数据结构14】中缀表达式转后缀表达式并计算表达式结果
文章目录1.具体步骤2. 思路分析3. 代码分析1.具体步骤2. 思路分析将中缀表达式转换为后缀表达式:1+((2+3)*4)-53. 代码分析public class PolanNotation { public static void main(String[] args) { //完成一个将中缀表达式转后置表达式的功能 //1. 1+((...原创 2019-12-27 17:32:23 · 464 阅读 · 0 评论 -
【数据结构03】数组模拟环形队列
1. 思路分析:2. 细节分析:这个地方需要仔细的分析一下:这里为了方便理解,在队列的最后预留了一个位置,如果不预留位置,考虑是一个环形队列,rear会指向第一个位置。3.代码实现:public class ArrayQueueDemo { public static void main(String[] args) { //创建一个队列 A...原创 2019-12-24 13:44:16 · 279 阅读 · 0 评论 -
【数据结构07】单链表的反转(腾讯面试题)
实现单链表的反转真的是要被这题搞死了,这个问题看了几个小时,刚开始怎么都理解不了,还是很有难度的题目整体分析:代码实现://方法:将单链表进行反转public static void reverseList(HeroNode head){ //如果当亲链表为空或者只有一个节点,直接返回 if(head.next==null ||head.next.next==null...原创 2019-12-25 14:01:12 · 644 阅读 · 2 评论 -
【数据结构22】希尔排序
1. 希尔排序介绍2. 希尔排序思路3. 代码实现3.1 交换法希尔排序推导过程:public class ShellSort { public static void main(String[] args) { int[] arr = {8,9,1,7,2,3,5,4,6,0}; System.out.println("排序前:"+Arr...原创 2019-12-29 17:38:59 · 289 阅读 · 0 评论 -
【数据结构01】稀疏数组
文章目录1.稀疏数组基本介绍2. 应用实例思路分析3. 代码实现1.稀疏数组基本介绍稀疏数组举例:第一行记录的是:这个数组中有多少行,多少列,多少非0值后面记录的是:各个值对应的行和列2. 应用实例思路分析思路分析:3. 代码实现二维数组的内存结构:public class SparseArray { public static void main(String...原创 2019-12-21 15:42:15 · 147 阅读 · 0 评论 -
【数据结构06】求单链表中有效节点的个数以及倒数第k个节点(新浪面试题)
下面的习题是基于上个博客做的:1. 求单链表中有效节点的个数在测试类中: //方法:获取到单链表的节点的个数(如果是带头节点的链表,需要不统计头结点) public static int getLength(HeroNode head){// if(head.next==null){//空链表// return 0;// }...原创 2019-12-25 13:11:36 · 472 阅读 · 0 评论 -
【数据结构20】选择排序
文章目录1. 选择排序介绍2. 选择排序思路分析3. 选择排序代码1. 选择排序介绍2. 选择排序思路分析3. 选择排序代码排序算法推导过程:public class SelectSrot { public static void main(String[] args) { int[] arr = {101,34,119,1}; Syste...原创 2019-12-29 15:19:45 · 245 阅读 · 0 评论 -
【数据结构41】二叉排序树的删除
1. 二叉排序树的删除思路分析2.代码实现public class BinarySortTreeDemo { public static void main(String[] args) { int[] arr = {7, 3, 10, 12, 5, 1, 9,2}; BinarySortTree binarySortTree = new Binary...原创 2020-01-08 11:01:53 · 754 阅读 · 0 评论 -
【数据结构31】二叉树的前序,中序,后序遍历
文章目录1. 树2. 树的常用术语3. 二叉树4. 二叉树的遍历5. 代码实现1. 树2. 树的常用术语3. 二叉树4. 二叉树的遍历5. 代码实现public class BinaryTreeDemo { public static void main(String[] args) { //创建一个二叉树 BinaryTree ...原创 2020-01-02 10:26:06 · 313 阅读 · 0 评论 -
【数据结构10】单向环形链表
1.单向环形链表的应用场景:2.环形单链表的创建与遍历:public class Josepfu { public static void main(String[] args) { CiecleSingleLinkedList ciecleSingleLinkedList = new CiecleSingleLinkedList(); ciecle...原创 2019-12-26 09:31:59 · 273 阅读 · 0 评论 -
【数据结构34】顺序存储二叉树
public class ArrBinaryTreeDemo { public static void main(String[] args) { int[] arr = {1,2,3,4,5,6,7}; ArrBinaryTree arrBinaryTree = new ArrBinaryTree(arr); arrBinaryTree...原创 2020-01-02 13:23:42 · 228 阅读 · 0 评论 -
【数据结构26】线性查找
1. 常用查找算法2. 线性查找算法3.代码实现public class SeqSearch { public static void main(String[] args) { int[] arr = {1,6,3,645,42,31}; int index = seqSearch(arr, 31); if(index==-1){...原创 2019-12-31 13:14:13 · 251 阅读 · 0 评论 -
【数据结构46】动态规划算法--01背包问题
public class KnapsackProblem { public static void main(String[] args) { int[] w = {1,4,3};//物品的重量 int[] val = {1500,3000,2000};//物品的价值 int m = 4;//背包的容量 int n =...原创 2020-01-09 11:03:17 · 400 阅读 · 0 评论 -
【数据结构05】单链表修改节点和删除节点
单链表按照节点编号来修改节点和删除节点1. 修改节点修改节点的代码://修改节点信息,根据no编号来修改public void update(HeroNode newHeroNode){ //判断是否为空 if(head.next==null){ System.out.println("链表为空"); return; } //找到需要修改的节点 ...原创 2019-12-24 17:38:29 · 1157 阅读 · 0 评论 -
【数据结构37】哈夫曼树
1. 赫夫曼树基本介绍public class HuffmanTree { public static void main(String[] args) { int arr[] = {13,7,8,3,29,6,1}; Node root = createHuffmanTree(arr); preOrder(root); ...原创 2020-01-03 10:30:03 · 243 阅读 · 0 评论 -
【数据结构29】斐波那契查找算法
文章目录1. 斐波那契查找算法介绍2. 代码实现1. 斐波那契查找算法介绍对于斐波那契数列:1、1、2、3、5、8、13、21、34、55、89……(也可以从0开始),前后两个数字的比值随着数列的增加,越来越接近黄金比值0.618。比如这里的89,把它想象成整个有序表的元素个数,而89是由前面的两个斐波那契数34和55相加之后的和,也就是说把元素个数为89的有序表分成由前55个数据元素组成...原创 2019-12-31 16:26:40 · 397 阅读 · 0 评论 -
【数据结构43】B树,B+树,B*树
文章目录1. B树介绍2. 2-3树3. B+树与B*树1. B树介绍2. 2-3树3. B+树与B*树原创 2020-01-08 14:32:11 · 248 阅读 · 0 评论 -
【数据结构16】递归-迷宫问题
1. 迷宫问题2. 代码实现public class MiGong { public static void main(String[] args) { //创建一个二维数组,模拟迷宫 int[][] map = new int[8][7]; //使用1表示墙(红色的部分都是墙) //先把上下两行都置为1 ...原创 2019-12-28 11:00:38 · 469 阅读 · 0 评论 -
【数据结构36】堆排序
文章目录1. 堆排序的基本介绍2. 堆排序思想3. 代码实现1. 堆排序的基本介绍2. 堆排序思想3. 代码实现public class HeapSort { public static void main(String[] args) { int arr[] = {4,6,8,5,9}; int temp = 0; ...原创 2020-01-02 17:58:46 · 218 阅读 · 1 评论 -
【数据结构39】哈夫曼编码实现文件压缩与解压
/*** 将文件进行压缩* @param strFile 传入的希望压缩的文件的全路径* @param dstFile 将压缩文件放到哪个目录*/public static void zipFile(String srcFile,String dstFile){ //创建输出流 FileInputStream is = null; FileOutputStream o...原创 2020-01-03 16:37:03 · 974 阅读 · 0 评论 -
【数据结构47】KMP算法--字符串匹配问题
文章目录1. 暴力匹配算法2. KMP算法1. 暴力匹配算法public class ViolenceMath { public static void main(String[] args) { String str1 = "硅硅谷 尚硅谷你尚硅 尚硅谷你尚硅谷你尚硅你好"; String str2 = "尚硅谷你尚硅你"; int...原创 2020-01-09 13:26:59 · 169 阅读 · 0 评论 -
【数据结构25】基数排序
文章目录1. 基数排序2. 基数排序思想3. 代码实现1. 基数排序2. 基数排序思想3. 代码实现分析算法过程:public class radixSort { public static void main(String[] args) { int arr[] = {53,3,542,748,14,214}; radixSort(arr...原创 2019-12-31 12:50:51 · 364 阅读 · 0 评论 -
【数据结构13】逆波兰计算器
文章目录1. 波兰表达式(前缀表达式)2. 中缀表达式3. 逆波兰表达式(后缀表达式)4. 逆波兰计算器1. 波兰表达式(前缀表达式)2. 中缀表达式3. 逆波兰表达式(后缀表达式)4. 逆波兰计算器public class PolanNotation { public static void main(String[] args) { //先定义逆波...原创 2019-12-27 15:35:39 · 300 阅读 · 0 评论 -
【数据结构32】二叉树的前序查找,中序查找,后序查找
public class BinaryTreeDemo { public static void main(String[] args) { //创建一个二叉树 BinaryTree binaryTree = new BinaryTree(); //创建需要的节点 HeroNode root = new HeroNode(...原创 2020-01-02 11:18:31 · 255 阅读 · 0 评论 -
【数据结构09】双向链表(增删该查)
public class DoubleLinkedListDemo { public static void main(String[] args) { //先创建几个节点 HeroNode heroNode1 = new HeroNode(1,"宋江","及时雨"); HeroNode heroNode2 = new HeroNode(...原创 2019-12-25 15:36:49 · 324 阅读 · 0 评论