数据结构与算法
数据结构与算法学习
Mu_Mu是一只小白
这个作者很懒,什么都没留下…
展开
-
数据结构与算法之图的深度优先遍历和广度优先遍历
图是表示一种多对多关系的数据结构它包括无向图,有向图,带权图无向图:就是顶点之间的连线(边)没有方向箭头有向图:就是顶点之间的连线(边)有方向箭头带权图:就是顶点之间的连线(边)表明了大小如上海到北京的距离,北京到天津的距离类似的导航地图就是带权图下图就是一个无向图:字母所表示的是顶点,顶点间的连线叫做边按照A,B,C,D,E,F,G的顺序添加节点,并添加对应的边构成下图深度优...原创 2020-03-15 15:53:37 · 4112 阅读 · 0 评论 -
队列,栈,链表的关系
想弄清楚这个问题首先得知道逻辑结构和存储结构(物理结构的区别)逻辑结构:逻辑结构分为四种类型:集合结构,线性结构,树形结构,图形结构。主要表示数据元素之间的关系如一对一的线性结构,一对多的树形结构,多对多的图形结构物理结构(存储结构):物理结构又叫存储结构,分为四种种,顺序存储结构、链式存储结构、索引结构、散列结构。主要表示数据在计算机中的存储方式是像数组一样的顺序存储,还是链表的链式...原创 2020-03-15 13:56:29 · 914 阅读 · 0 评论 -
数据结构与算法之平衡二叉树的构建和遍历
定义:平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。产生原因:如果待添加节点的值是有顺序的如{1,3,5,8,9,13}按照排序二叉树就会排列成如下图所示,这样它更像链表,添加效率高,遍历效率低,因为每次还...原创 2020-03-12 15:51:59 · 746 阅读 · 0 评论 -
数据结构与算法之二叉排序树的增加,删除,遍历
顺序二叉树:子树的左节点小于子树节点,子树的右节点大于子树节点,(和子树相同大小的节点可在左也可在右一般不提倡出现相同大小的节点)package com.yg.tree.binarySortTree;/*@author Mu_Mu@date 2020/3/11 9:50*/public class BinarySortTreeDemo { public static ...原创 2020-03-11 14:19:56 · 185 阅读 · 0 评论 -
JAVA代码编写哈夫曼编码实现数据和文件的压缩和解压算法
package com.yg.tree.huffman;/*@author Mu_Mu@date 2020/3/8 10:16*/import com.yg.tree.HuffmanTree;import java.util.*;public class HaffmanCode { //存放对应字符的Ascci码,和对应路径 private static...原创 2020-03-09 17:12:34 · 833 阅读 · 0 评论 -
数据结构与算法之构建哈夫曼树
哈夫曼树的介绍Huffman Tree,中文名是哈夫曼树或霍夫曼树或者赫夫曼树,它是最优二叉树。定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若树的带权路径长度达到最小,则这棵树被称为哈夫曼树。(01) 路径和路径长度定义:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L...原创 2020-03-07 11:25:13 · 2557 阅读 · 0 评论 -
数据结构与算法之堆排序
堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:该数组从逻辑上讲就是一个堆结构,我们用简单的公式来描述一下...原创 2020-03-06 11:43:51 · 131 阅读 · 1 评论 -
数组实现顺序二叉树的前序遍历,中序遍历,后序遍历
顺序二叉树的满足条件:1.一般指完全二叉树2.第n个元素的左子树为2*n+1;3.第n个元素的右子树为2*n+2;4.第n个子树的父节点为(n-1)/2;注意:n为数组下标所以是从0开始代码实现:package com.yg.tree;/*@author Mu_Mu@date 2020/3/4 10:50顺序二叉树*/public class ArrBinary...原创 2020-03-04 11:36:08 · 2797 阅读 · 0 评论 -
二分查找算法
package com.yg.search;/*@author Mu_Mu@date 2020/2/28 15:24*/import java.util.ArrayList;import java.util.List;public class BinarySearch { public static void main(String[] args) { ...原创 2020-02-28 16:34:52 · 408 阅读 · 0 评论 -
数据结构与算法之基数排序
**算法思想:基数排序又称为“桶子法”,从低位开始将待排序的数按照这一位的值放到相应的编号为0~9的桶中。等到低位排完得到一个子序列,再将这个序列按照次低位的大小进入相应的桶中,一直排到最高位为止,数组排序完成。**图解代码package com.yg.sort;/*@author Mu_Mu@date 2020/2/28 13:15*/import java.ut...原创 2020-02-28 13:58:00 · 109 阅读 · 0 评论 -
数据结构与算法之归并排序
归并排序:将数组分解为左右两个部分,不断对左右两个部分进行左右递归分解,直到每个部分只有一个元素,然后对不断对其进行合并,最终经过n-1次合并成为有序序列;分解过程合并过程:代码:package com.yg.sort;/*@author Mu_Mu@date 2020/2/27 10:13*/import java.util.Arrays;public...原创 2020-02-27 13:13:07 · 97 阅读 · 0 评论 -
数据结构与算法之快速排序
package com.yg.sort;/*@author GeQiLin@date 2020/2/26 21:00*/import java.util.Arrays;public class QuickSort { private static int max = 15; private static int arr[]; public stat...原创 2020-02-27 10:02:51 · 94 阅读 · 0 评论 -
java实现冒泡排序,直接插入排序,选择排序,希尔排序,以及求出它们的时间复杂度O(n)
package com.yg.sort;/*@author GeQiLin@date 2020/2/25 16:53*/import java.util.Arrays;public class Sort1 { private static int max =80000; private static int arr[]; public static...原创 2020-02-26 11:35:57 · 211 阅读 · 0 评论 -
递归解决八皇后回溯算法
问题简述:八皇后问题是一个古来而著名的问题,该问题是19世纪著名的数学家高斯同学提出来的。在8*8的国际象棋上摆放八个皇后,使其不能互相的攻击,也就是说,任意的两个皇后不能放在同一行或则是同一个列或者是同一个对角线上,问有多少个摆放的方法代码:package com.yg.recursion;/*@author GeQiLin@date 2020/2/24 20:30求解8皇后...原创 2020-02-24 21:03:59 · 141 阅读 · 0 评论 -
递归求解迷宫问题
package com.yg.recursion;/*@author GeQiLin@date 2020/2/24 16:01*/public class MiGong { private static int col = 7; private static int row = 6; private static int[][] map;//用二维数组模...原创 2020-02-24 17:17:30 · 321 阅读 · 0 评论 -
栈实现中序表达式转后序表达式,并求出逆波兰表达式的值
package com.yg.stack;/*@author GeQiLin@date 2020/2/22 20:24*/import org.hibernate.validator.internal.util.privilegedactions.NewProxyInstance;import org.springframework.web.bind.annotation.R...原创 2020-02-23 19:33:47 · 491 阅读 · 1 评论 -
栈实现计算机复杂计算
package com.yg.stack;/*@author GeQiLin@date 2020/2/22 14:14*/import jdk.nashorn.internal.ir.ReturnNode;public class Calculator { /* * 1.index遍历表达式,一次取出一个字符存入ch中 * 2.若ch是数字放入n...原创 2020-02-22 20:08:58 · 457 阅读 · 0 评论 -
用环状单向链表解决约瑟夫问题
package com.yg.linkedList;/*@author GeQiLin@date 2020/2/21 16:23*/import java.util.spi.CurrencyNameProvider;public class Josephu { public static void main(String[] args) { Circ...原创 2020-02-21 17:24:27 · 161 阅读 · 0 评论 -
双端链表的增加,删除,修改,遍历操作的实现
package com.yg.linkedList;/*@author GeQiLin@date 2020/2/21 13:46*/public class DoubleLinkedListDemo { public static void main(String[] args) { //测试 System.out.println("双向...原创 2020-02-21 17:23:09 · 179 阅读 · 0 评论 -
单链表的学习心得
package com.yg.linkedList;/*@author Ge@date 2020/2/19 15:01*/import javax.validation.constraints.Pattern;import java.util.Stack;public class SingleLinkedListDemo { public static void ...原创 2020-02-20 19:16:07 · 2342 阅读 · 0 评论 -
数组和稀疏数组的相互转换并存储在txt文件中
package com.yg.dataStructure;/*@author Ge@date 2020/2/17 14:45*/import java.io.*;public class SparseArray { public static void main(String[] args) { int chessArr1[][] = new int...原创 2020-02-18 17:32:46 · 291 阅读 · 0 评论 -
数组模拟队列
package com.yg.queue;/*@author Ge@date 2020/2/18 16:25*/import java.util.Scanner;public class CircleArrayQueueDemo { public static void main(String[] args) { CircleArrayQueue q...转载 2020-02-18 17:29:12 · 115 阅读 · 0 评论