数据结构与算法
文章平均质量分 83
每天都要进步哇
于2017年12月份步入软件开发行业,主要擅长java,目前从事的也是有关java开发的工作
展开
-
图结构
定义 用来表示多对多的关系的数据结构称之为图,如下图所示 图1 顶点:每一个点叫做顶点 边:每一条边叫做边 邻接:通过一条边连接的两个点叫做邻接关系,比如V1和V2是邻接的,V2和V4不是邻接的 路径:V1V3V4表示以V1为出发点到V4的路径 有向图和无向图:边带箭头的叫有向图,不带箭头的叫无向图,有向和无向影响路径 带权图:每一条边如果带一个有意义的值的话就叫做带权图 实现...原创 2020-04-07 01:48:01 · 899 阅读 · 0 评论 -
哈希表
定义 通过键值对存储数据的方式称之为哈希表,也叫散列表 散列函数 设计散列表的函数称之为散列函数,散列函数应该遵循这些原则:计算简单,分布均匀 设计方法 直接定址法:把值作为地址直接存,如1就存在数组下标为1的地方 数据分析法:对数据进行分析后定制一种规则进行存储 平方取中法:每个值取平方,中间位作为数组的下标进行存储 取余法:余数作为数组的下标进行存储 随机数法:取随机数作为数...原创 2020-04-07 00:06:29 · 96 阅读 · 0 评论 -
AVL树
定义 按照二叉排序树的定义,我们在创建一棵二叉排序树时很有可能会得到一棵奇怪的树,比如一棵没有左子树的二叉排序树,此时二叉排序树在查找方面或得的优势几乎荡然无存。于是为了解决这个问题,我们引进了AVL树这样的一种结构,AVL树要求左子树和右子树的高度差绝对值不超过1.也叫平衡二叉树。 构建平衡二叉树 单旋转创建 双旋转创建 ...原创 2020-04-06 01:22:31 · 59 阅读 · 0 评论 -
二叉排序树
定义 数据的两种存储结构其优缺点明显,为了更好的结合这两种方式的优势,即我们希望有一种数据结构可以在增删方便的同时查找也不那么费力,于是便有了二叉排序树。二叉排序树的特点是对于一个二叉树的所有非叶子节点,其左子节点比当前节点值小,右子节点比当前节点大。简称BST(Binary Sort Tree),又称二叉查找树或者二叉搜索树。 实现 /** * 二叉排序树 */ public cla...原创 2020-04-05 15:57:39 · 171 阅读 · 0 评论 -
赫夫曼树
定义 叶节点的带权路径:到达叶节点的节点个数与该节点的权的乘积称之为叶节点的带权路径 树的带权路径长度(wpl):二叉树的所有叶节点的带权路径之和称之为树的带权路径长度,简称为wpl 一棵树在叶节点都确定的情况下可以有多种结构,我们把这里面wpl最小的一种树结构称之为最优二叉树,也叫做赫夫曼树。 代码实现 /** * 赫夫曼树 */ public class HuffmanTree...原创 2020-04-02 17:17:48 · 78 阅读 · 0 评论 -
二叉树
基础概念原创 2020-03-28 18:53:19 · 197 阅读 · 0 评论 -
最基本的八种排序算法
排序算法总共分成四大类原创 2020-03-27 11:36:48 · 347 阅读 · 0 评论 -
常见的查找算法
查询 线性查找:直接遍历比对,直到找到为止,效率较低 public int linearSearch(int val) { int[] arr = new int[]{1, 2, 3, 4, 5}; int index = -1; for (int i = 0; i < arr.length; i++) { ...原创 2020-03-22 19:15:55 · 107 阅读 · 0 评论 -
顺序存储和链式存储的基本实现
顺序存储结构 数组:一组连续的数,以下标为索引,在内存中是连续的 import java.util.Arrays; /** * 面向对象的数组 * 扩展:集合的底层实现原理 */ public class Demo { private int[] elements; public Demo() { elements = new int[0]; ...原创 2020-03-22 15:42:37 · 485 阅读 · 0 评论 -
数据结构和算法概述
数据结构概述 数据结构:数据和数据之间的关系 分类 数据的存储结构: 1.顺序存储结构:占用一段连续的内存,数据是一个挨着一个的 2.链式存储结构:不一定是一组连续的存储单元,可以是分散的, 以上两者的区别:顺序结构是线性的,链式结构是离散的。顺序结构查找快,链式结构插入,删除灵活。 数据的逻辑结构: 1.集合:所有的元素是并列关系,即元素与元...原创 2019-10-21 23:34:29 · 165 阅读 · 0 评论