数据结构
文章平均质量分 86
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
是我,Zack
就职于某公司大数据部,负责开发、实施、运维相关工作,喜欢边学习边笔记,热衷分享、开源,有大数据方向感兴趣的小伙伴欢迎多多交流~
展开
-
java数据结构 第11章--树结构实际应用02 赫夫曼树的分析和代码实现
文章目录11.2 赫夫曼树11.2.1 基本介绍1.最优二叉树定义2.最优二叉树特点11.2.2 赫夫曼树几个重要概念和举例说明1.路径和路径长度:2.结点的权及带权路径长度:3.树的带权路径长度:4.WPL 最小的就是赫夫曼树11.2.3 赫夫曼树创建思路图解1.思路分析(示意图):构成赫夫曼树的步骤11.2.4 赫夫曼树的代码实现 代码实现:1.实际代码2.运行结果知识点补充【学习笔记】【学习资料】11.2 赫夫曼树11.2.1 基本介绍1.最优二叉树定义给定n 个权值作为n 个叶子结点,构造一原创 2021-04-17 17:06:31 · 177 阅读 · 0 评论 -
java数据结构 第11章--树结构实际应用01 推排序
文章目录11.1 堆排序11.1.1 堆排序基本介绍1.堆的时间复杂度2.堆的定义3. 大顶堆举例说明4. 小顶堆举例说明5. 使用场景11.1.2 堆排序基本思想堆排序的基本思想是:11.1.3 堆排序步骤图解1.说明 要求2.步骤一:构造初始堆3.步骤二:将堆顶元素与末尾元素进行交换,使末尾元素最大。4.再简单总结下堆排序的基本思路:11.1.4 堆排序代码实现1.要求:2.说明:3.代码实现4.运行结果5. 效率测试(800w 3s)其他备注【学习笔记】【学习资料】11.1 堆排序11.1.1 堆原创 2021-04-17 17:03:16 · 170 阅读 · 0 评论 -
java数据结构 第10章树--结构的基础部分02 顺序储存二叉树、线索化二叉树
文章目录10.2 顺序存储二叉树10.2.1 顺序存储二叉树的概念1.基本说明2.要求:3.顺序存储二叉树的特点:10.2.2 顺序存储二叉树遍历1.代码实现:2.运行结果3.课后作业10.2.3 顺序存储二叉树应用实例10.3 线索化二叉树10.3.1 先看一个问题10.3.2 线索二叉树基本介绍10.3.3 线索二叉树应用案例1.思路分析:2.代码实现:3.运行结果:10.3.4 遍历线索化二叉树2) 分析:3) 代码:4) 运行结果10.3.5 线索化二叉树的课后作业:【学习笔记】【学习资料】10.原创 2021-04-17 14:24:41 · 314 阅读 · 0 评论 -
java数据结构 第10章--树结构的基础部分01
文章目录10.1 二叉树10.1.1 为什么需要树这种数据结构1) 数组存储方式的分析2) 链式存储方式的分析3) 树存储方式的分析10.1.2 树示意图树的常用术语(结合示意图理解):10.1.3 二叉树的概念1) 二叉树2) 左右节点3) 示意图4) 满二叉树5) 完全二叉树10.1.4 二叉树遍历的说明1) 前序遍历:2) 中序遍历:3) 后序遍历:10.1.5 二叉树遍历应用实例(前序,中序,后序)1)应用实例的说明和思路2)代码实现3)运行结果10.1.6 二叉树-查找指定节点1) 要求2) 思路原创 2021-04-14 17:13:25 · 175 阅读 · 0 评论 -
二叉树线索化以及线索化的先序、中序、后序遍历(课后作业)
文章目录前言 线索化二叉树介绍01 为什么要线索化二叉树02 线索二叉树基本介绍一、前序线索化1.1 过程演示1.2 代码实现:1.2.1 编写对二叉树进行前序线索化的方法1.2.2 前序线索化遍历1.3 运行结果:二、中序线索化2.1 过程演示2.2 代码实现2.3 运行结果三、后续线索化3.1 过程演示略3.2 代码实现3.3 运行结果四、总代码参考文章:前言 线索化二叉树介绍01 为什么要线索化二叉树将数列{1, 3, 6, 8, 10, 14 } 构建成一颗二叉树. n+1=7问原创 2021-04-17 14:18:52 · 1335 阅读 · 1 评论 -
顺序储存二叉树前中后序遍历(课后练习)
顺序存储二叉树顺序存储二叉树的概念1.基本说明从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组,看右面的示意图。2.要求:右图的二叉树的结点,要求以数组的方式来存放arr : [1, 2, 3, 4, 5, 6, 6]要求在遍历数组arr 时,仍然可以以前序遍历,中序遍历和后序遍历的方式完成结点的遍历3.顺序存储二叉树的特点:顺序二叉树通常只考虑完全二叉树第n 个元素的左子节点为2 * n + 1第n 个元素的右子原创 2021-04-15 17:12:26 · 624 阅读 · 2 评论 -
java数据结构 第9章--哈希表
文章目录9.1 哈希表(散列)-Google 上机题9.2 哈希表的基本介绍9.3 google 公司的一个上机题:4)思路分析并画出示意图5)代码实现6)运行结果【学习笔记】【学习资料】9.1 哈希表(散列)-Google 上机题看一个实际需求,google 公司的一个上机题:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id 时,要求查找到该员工的所有信息.要求: 不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列原创 2021-04-14 10:22:48 · 409 阅读 · 0 评论 -
java数据结构 第8章--查找算法
文章目录8.1 查找算法介绍8.2 线性查找算法IinearSearch1.代码实现:2.运行结果8.3 二分查找算法 BinarySearch8.3.1 二分查找:8.3.2 二分查找算法的思路8.3.3二分查找的代码1.代码演示2.运行结果8.4 插值查找算法 InsertValueSearch8.4.1 插值查找原理8.4.2 插值查找应用案例1.代码实现2.运行结果3.简单验证8.4.3 插值查找注意事项8.5 斐波那契(黄金分割法)查找算法 FibonacciSearch8.5.1斐波那契(黄金分原创 2021-04-13 18:28:59 · 347 阅读 · 0 评论 -
java数据结构 第7章--排序算法09-常用排序算法总结和对比!
文章目录7.12 常用排序算法总结和对比7.12.1 一张排序算法的比较图7.12.2 相关术语解释:7.12.3 各排序算法简记1.冒泡排序2.选择排序3.插入排序 InsertSort4.希尔排序 ShellSort5.归并排序6.快速排序7.基数排序【学习笔记】【学习资料】7.12 常用排序算法总结和对比7.12.1 一张排序算法的比较图桶排序在二叉树后7.12.2 相关术语解释:稳定:如果a 原本在b 前面,而a=b,排序之后a 仍然在b 的前面;不稳定:如果a 原本在b 的前原创 2021-04-12 23:02:09 · 302 阅读 · 0 评论 -
java数据结构 第7章--排序算法08-基数排序
文章目录7.10 归并排序7.10.1 归并排序介绍:7.10.2 归并排序思想示意图1-基本思想:7.10.3 归并排序思想示意图2-合并相邻有序子序列:7.10.4 归并排序的应用实例:1.代码演示2.运行结果3.效率测试(800w 1s)7.11 基数排序7.11.1 基数排序(桶排序)介绍:7.11.2 基数排序基本思想7.11.3 基数排序图文说明7.11.4 基数排序代码实现1) 思路分析:2) 代码实现:3)效率测试(800w <1s)【学习笔记】【学习资料】7.10 归并排序7.1原创 2021-04-12 22:13:53 · 260 阅读 · 0 评论 -
java数据结构 第7章--排序算法07-归并排序
文章目录7.10 归并排序7.10.1 归并排序介绍:7.10.2 归并排序思想示意图1-基本思想:7.10.3 归并排序思想示意图2-合并相邻有序子序列:7.10.4 归并排序的应用实例:1.代码演示2.运行结果3.效率测试(800w 1s)【学习笔记】【学习资料】7.10 归并排序7.10.1 归并排序介绍:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治原创 2021-04-12 16:05:22 · 207 阅读 · 0 评论 -
java数据结构 第7章--排序算法06-快速排序
文章目录7.9 快速排序7.9.1快速排序法介绍:7.9.2快速排序法示意图:7.9.3快速排序法应用实例:1) 如果取消左右递归,结果是-9 -567 0 23 78 702) 如果取消右递归,结果是-567 -9 0 23 78 703) 如果取消左递归,结果是-9 -567 0 23 70 784) 代码实现5) 测试80w(1s)【学习笔记】【学习资料】7.9 快速排序7.9.1快速排序法介绍:快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独原创 2021-04-11 23:07:15 · 253 阅读 · 0 评论 -
java数据结构 第7章--排序算法05-希尔排序
文章目录7.8 希尔排序7.8.1简单插入排序存在的问题7.8.2希尔排序法介绍7.8.3希尔排序法基本思想7.8.4希尔排序法的示意图7.8.5希尔排序法应用实例:1) 希尔排序时, 对有序序列在插入时采用交换法, 并测试排序速度.2) 希尔排序时, 对有序序列在插入时采用移动法, 并测试排序速度3) 代码实现4) 结果演示5) 耗时测试(<1s)【学习笔记】【学习资料】7.8 希尔排序7.8.1简单插入排序存在的问题我们看简单的插入排序可能存在的问题.数组arr = {2,3,4,5,6,原创 2021-04-11 21:38:03 · 236 阅读 · 0 评论 -
java数据结构 第7章--排序算法04-插入排序
文章目录7.7 插入排序7.7.1插入排序法介绍:7.7.2插入排序法思想:7.7.3插入排序思路图:7.7.4插入排序法应用实例:1.代码实现:2.运行结果3.耗时测试(1s)【学习笔记】【学习资料】7.7 插入排序7.7.1插入排序法介绍:插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。7.7.2插入排序法思想:插入排序(Insertion Sorting)的基本思想是:把n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个原创 2021-04-11 21:36:08 · 264 阅读 · 0 评论 -
java数据结构 第7章--排序算法03-选择排序
文章目录7.6 选择排序7.6.1基本介绍7.6.2选择排序思想:7.6.3选择排序思路分析图:7.6.4选择排序应用实例:1.代码实现2.结果演示3.耗时测试(2s)【学习笔记】【学习资料】7.6 选择排序7.6.1基本介绍选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。7.6.2选择排序思想:选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]arr[n-1]中选取最小值,与arr[0原创 2021-04-11 21:33:37 · 291 阅读 · 0 评论 -
java数据结构 第7章--排序算法02-冒泡排序
文章目录7.5 冒泡排序7.5.1基本介绍7.5.2演示冒泡过程的例子(图解)7.5.3冒泡排序应用实例1.代码实现:2.结果演示3.测试8w数据排序耗时(11s)【学习笔记】【学习资料】7.5 冒泡排序7.5.1基本介绍冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有原创 2021-04-11 21:30:17 · 459 阅读 · 0 评论 -
java数据结构 第7章--排序算法01
文章目录7.1 排序算法的介绍7.2 排序的分类:image.png7.3 算法的时间复杂度7.3.1度量一个程序(算法)执行时间的两种方法1) 事后统计的方法2) 事前估算的方法7.3.2 时间频度1.基本介绍2.举例说明-基本案例3.举例说明-忽略常数项4.举例说明-忽略系数7.3.3 时间复杂度计算时间复杂度的方法:7.3.4 常见的时间复杂度1.常数阶O(1)2.对数阶O(log2n)image.png3.线性阶O(n)4.线性对数阶O(nlogN)5.平方阶O(n²)6.立方阶O(n³)、K次方阶原创 2021-04-10 23:24:20 · 341 阅读 · 0 评论 -
java数据结构 第5章--栈
文章目录5.1 栈的一个实际需求5.2 栈的介绍5.3 栈的应用场景5.4 栈的快速入门5.4.1 用数组模拟栈的使用5.4.2 数组模拟栈的思路分析图5.4.3 代码实现5.4.4 结果演示5.4.5 关于栈的一个小练习5.5 栈实现综合计算器(中缀表达式)5.5.1 思路分析(图解)5.5.2 代码实现5.5.3 课后练习题--加入小括号.5.6 前缀、中缀、后缀表达式(逆波兰表达式)5.6.1前缀表达式(波兰表达式)5.6.2 中缀表达式5.6.3 后缀表达式5.7 逆波兰计算器1) 输入一个逆波兰表原创 2021-04-10 16:14:21 · 202 阅读 · 0 评论 -
java数据结构 第6章--递归
6.1 递归应用场景看个实际应用场景,迷宫问题(回溯), 递归(Recursion)6.2 递归的概念简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。6.3 递归调用机制我列举两个小案例,来帮助大家理解递归,部分学员已经学习过递归了,这里在给大家回顾一下递归调用机制6.3.1 打印问题6.3.2 阶乘问题package recursion;import java.util.Arrays;public clas原创 2021-04-10 22:12:42 · 214 阅读 · 0 评论 -
java数据结构 第4章-链表(双向链表)
文章目录4.4 双向链表应用实例4.4.1双向链表的操作分析和实现1.管理单向链表的缺点分析:2.分析 双向链表的遍历,添加,修改,删除的操作思路3.双向链表的代码实现4.代码运行结果4.4.2课堂作业和思路提示1.直接上代码2.运行结果4.5 单向环形链表应用场景4.5.1 Josephu(约瑟夫、约瑟夫环) 问题4.5.2 单向环形链表介绍4.5.3 约瑟夫问题求解1.约瑟夫问题示意图2.创建环形链表的思路图解3.小孩出圈的思路分析图4. Josephu 问题的代码实现5.结果演示学习笔记学习资料4.原创 2021-04-09 23:21:19 · 317 阅读 · 0 评论 -
java数据结构 第4章-链表(单链表)
文章目录第4章链表4.1 链表(Linked List)介绍4.1.1 存储结构4.1.2 逻辑结构4.2 单链表的应用实例1) 第一种方法在添加英雄时,直接添加到链表的尾部2) 第二种方式在添加英雄时,根据排名将英雄插入到指定位置3) 修改节点功能4) 删除节点5) 代码演示:4.3 单链表面试题(新浪、百度、腾讯)1) 求单链表中有效节点的个数2) 查找单链表中的倒数第k 个结点【新浪面试题】3) 单链表的反转【腾讯面试题,有点难度】4) 从尾到头打印单链表【百度,要求方式1:反向遍历。方式2:Stac原创 2021-04-09 14:04:40 · 406 阅读 · 0 评论 -
合并两个有序的单链表,合并之后的新链表依然有序(课后作业)
学习笔记:分析过程:将两个有序的单链表合并成一个有序的单链表思路:1.利用第三个单链表存储两个单链表的节点,若两个链表均为空,则直接返回;2.若其中一个链表为空,则直接将另一个链表连接至链表3上;3.若两个链表均不为空,先将其中一个链表1连接至链表3,然后遍历另一个链表2,将链表2中的节点按照顺序连接至链表3上。4.若出现链表3遍历完毕但链表2尚未遍历完毕的情况,可以直接将链表2剩下的节点连接至链表3尾部。代码展示:Github:package Linkedlist;public原创 2021-04-09 13:53:20 · 609 阅读 · 0 评论 -
java数据结构 第3章-稀疏数组和队列(含代码)
待原创 2021-04-08 21:01:02 · 371 阅读 · 1 评论 -
二维数组与稀疏数组互相转换(先存入磁盘再读取恢复)
java数据结构 第3章-稀疏数组和队列要求:在前面的基础上,将稀疏数组保存到磁盘上,比如map.data恢复原来的数组时,读取map.data 进行恢复package SparseArray;import java.awt.*;import java.io.*;public class SparseArray { public static void main(String[] args) throws IOException { // 创建一个原始的二维数组1原创 2021-04-08 20:57:22 · 279 阅读 · 0 评论 -
java数据结构 第2章-数据结构和算法概述
第2章-数据结构和算法概述2.1 数据结构和算法的关系数据data 结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决.程序= 数据结构+ 算法数据结构是算法的基础, 换言之,想要学好算法,需要把数据结构学到位。2.2 看几个实际编程中遇到的问题2.2.1 问题一-字符串替换问题小结:需要使用到单链表数据结构2.原创 2021-04-08 17:22:06 · 279 阅读 · 0 评论 -
java数据结构 第1章-内容框架介绍
1.1 数据结构和算法内容介绍1.1.1 先看几个经典的算法面试题1.字符串匹配问题::有一个字符串str1= ““硅硅谷尚硅谷你尚硅尚硅谷你尚硅谷你尚硅你好””,和一个子串str2="尚硅谷你尚硅你"现在要判断str1 是否含有str2, 如果存在,就返回第一次出现的位置, 如果没有,则返回-1要求用最快的速度来完成匹配你的思路是什么? 暴力匹配[简单,但是效率低] KMP 算法《部分匹配表》2.汉诺塔游戏,请完成汉诺塔游戏的代码: 要求:1) 将A 塔的所原创 2021-04-08 17:09:33 · 234 阅读 · 0 评论