Java学习之数据结构知识点

Java学习系列知识点纯干货:
1.Java学习之Java基础部分知识点—>传送门
2.Java学习之Java多线程知识点—>传送门
3.Java学习之数据库知识点—>传送门
4.计算机网络知识点—>传送门
5.Java学习数据结构知识点—>传送门
6.操作系统知识点学习—>传送门

数据结构

一、简述数据结构

栈是一种线性表,其限制只能在表尾进行插入或删除操作。由于该特性又称为后进先出的线性表。

二、简述数据结构队列

队列是一种先进先出的线性表。其限制只能在线性表的一端进行插入,而在另一端删除元素。

三、简述二叉树

二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成。

四、简述满二叉树

一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。

五、简述完全二叉树

一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。

六、简述二叉树的前中后序遍历算法

  • 前序遍历:若二叉树为空树,则执行空逻辑,否则:
  1. 访问根节点
  2. 递归前序遍历左子树
  3. 递归前序遍历右子树
  • 中序遍历:若二叉树为空树,则执行空逻辑,否则:
  1. 递归中序遍历左子树
  2. 访问根节点
  3. 递归中序遍历右子树
  • 后序遍历:若二叉树为空树,则执行空逻辑,否则:
  1. 递归后序遍历左子树
  2. 递归后序遍历右子树
  3. 访问根节点

七、简述解决Hash冲突的方法

  • 开放定址法:当发生哈希冲突时,如果哈希表未被装满,那么可以把这个值存放到冲突位置中的下一个空位置中去
  • 链地址法:对相同的哈希地址,设置一个单链表,单链表内放的都是哈希冲突元素。

八、简述AVL树

AVL树是一种改进版的搜索二叉树,其引入平衡因子(左子支高度与右子支高度之差的绝对值),通过旋转使其尽量保持平衡。
任何一个节点的左子支高度与右子支高度之差的绝对值不超过1。

九、简述红黑树

红黑树本身是有2-3树发展而来,红黑树是保持黑平衡的二叉树,其查找会比AVL树慢一点,添加和删除元素会比AVL树快一点。增删改查统计性能上讲,红黑树更优。
红黑树主要特征是在每个节点上增加一个属性表示节点颜色,可以红色或黑色。红黑树和 AVL 树类似,都是在进行插入和删除时通过旋转保持自身平衡,从而获得较高的查找性能。红黑树保证从根节点到叶尾的最长路径不超过最短路径的 2 倍,所以最差时间复杂度是 O(logn)。红黑树通过重新着色和左右旋转,更加高效地完成了插入和删除之后的自平衡调整。

十、简述稳定排序和非稳定排序的区别

稳定排序:排序前后两个相等的数相对位置不变,则算法稳定
非稳定排序:排序前后两个相等的数相对位置发生了变化,则算法不稳定

十一、常见的稳定排序算法有哪些

插入排序、
冒泡排序、
归并排序

十二、常见的不稳定排序算法有哪些

希尔排序、
直接选择排序、
堆排序、
快速排序

十三、简述插入排序

插入排序:每一趟将一个待排序记录按其关键字的大小插入到已排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。
排序算法稳定。时间复杂度 O(n²),空间复杂度 O(1)。

十四、简述希尔排序

希尔排序:把记录按下标的一定增量分组,对每组进行直接插入排序,每次排序后减小增量,当增量减至 1 时排序完毕。
排序算法不稳定。时间复杂度O(nlogn),空间复杂度 O(1)。

十五、简述直接选择排序

直接选择排序:每次在未排序序列中找到最小元素,和未排序序列的第一个元素交换位置,再在剩余未排序序列中重复该操作直到所有元素排序完毕。
排序算法不稳定。时间复杂度 O(n²),空间复杂度 O(1)。

十六、简述堆排序

堆排序:将待排序数组看作一个树状数组,建立一个二叉树堆。通过对这种数据结构进行每个元素的插入,完成排序工作。
排序算法不稳定,时间复杂度 O(nlogn),空间复杂度 O(1)。

十七、简述冒泡排序

冒泡排序:比较相邻的元素,如果第一个比第二个大就进行交换,对每一对相邻元素做同样的工作。
排序算法稳定,时间复杂度 O(n²),空间复杂度O(1)。

十八、简述快速排序

快速排序:随机选择一个基准元素,通过一趟排序将要排序的数据分割成独立的两部分,一部分全部小于等于基准元素,一部分全部大于等于基准元素,再按此方法递归对这两部分数据进行快速排序。
排序算法不稳定,时间复杂度 O(nlogn),空间复杂度 O(logn)。

十九、简述归并排序

归并排序:将待排序序列分成两部分,然后对两部分分别递归排序,最后进行合并。
排序算法稳定,时间复杂度都为 O(nlogn),空间复杂度为O(n)。

二十、简述图

图是由顶点集合和顶点之间的边集合组成的一种数据结构,分为有向图和无向图。

  • 有向图:边具有方向性
  • 无向图:边不具有方向性

二一、简述邻接矩阵

用一个二维数组存放图顶点间关系的数据,这个二维数组称为邻接矩阵。
对于无向图,邻接矩阵是对称矩阵

二二、简述邻接表

邻接表是通过链表表示图连接关系的一种方。对于表头结点所对应的顶点存在相邻顶点,则把相邻顶点依次存放于表头结点所指向的单向链表中。

二三、简述图的深度优先搜索DFS

将图中每个顶点的访问标志设为 FALSE,之后搜索图中每个顶点,如果未被访问,则以该顶点V0为起始点出发,访问此顶点,然后依次从V0的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被访问到。

二四、简述图的广度优先搜索

从图中的某个顶点V0出发,并在访问此顶点之后依次访问V0的所有未被访问过的邻接点,之后按这些顶点被访问的先后次序依次访问它们的邻接点,直至图中所有和V0有路径相通的顶点都被访问到。

二五、简述最小生成树和其对应的算法

对于有 n 个结点的原图,生成原图的极小连通子图,其包含原图中的所有 n 个结点,并且有保持图连通的最少的边。

  • 普里姆算法:取图中任意一个顶点 v 作为生成树的根,之后往生成树上添加新的顶点 w。在添加的顶点w 和已经在生成树上的顶点v之间必定存在一条边,并且该边的权值在所有连通顶点 v 和 w 之间的边中取值最小。之后继续往生成树上添加顶点,直至生成树上含有 n-1 个顶点为止。
  • 克鲁斯卡尔算法:先构造一个只含 n 个顶点的子图 SG,然后从权值最小的边开始,若它的添加不使SG 中产生回路,则在 SG上加上这条边,如此重复,直至加上 n-1 条边为止。

二六、简述最短路径算法

Dijkstral算法为求解一个点到其余各点最小路径的方法,其算法为:
假设我们求解的是顶点v到其余各个点的最短距离。n次循环至n个顶点全部遍历:

  1. 从权值数组中找到权值最小的,标记该边端点k
  2. 打印该路径及权值
  3. 如果存在经过顶点k到顶点i的边比v->i的权值小
  4. 更新权值数组及对应路径

二七、简述堆

堆是一种完全二叉树形式,其可分为最大值堆和最小值堆。

  • 最大值堆:子节点均小于父节点,根节点是树中最大的节点。
  • 最小值堆:子节点均大于父节点,根节点是树中最小的节点。

二八、简述set

Set是一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。

以上为数据结构基本知识,下篇讲操作系统!!! 记得订阅本栏目,一件三连关注博主哟,继续分享更多实用知识!!!


http://www.niftyadmin.cn/n/5113830.html

相关文章

2023年9月青少年软件编程C语言三级真题及答案

1. 谁是你的潜在朋友 “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发…

【Java 进阶篇】Java XML约束:确保数据一致性和有效性

XML(可扩展标记语言)是一种常用的数据交换格式,用于存储和交换数据。然而,为了确保数据的一致性和有效性,通常需要定义XML约束。XML约束是一种规则集,定义了XML文档的结构、元素、属性和数据类型。本篇博客…

Hadoop之HDFS

目录 1.HDFS概述 1.1HDFS产出背景及定义 1.2 HDFS优缺点 1.3 HDFS组成架构 1.4 HDFS文件块大小 2. HDFS的Shell操作 2.1 基本语法 2.2 命令大全 2.3 常用命令实操 2.3.1 准备工作 2.3.2 上传 2.3.3 下载 2.3.4 HDFS直接操作 3. HDFS的API操作 3.1 客户端环境准备…

西山居 游戏研发工程师实习生 面经

西山居实习面经 面试时长:26min(两个面试官交替问) 1、自我介绍 2、你平常怎么学习的 3、你实习接受加班么 4、说一下Unity的生命周期,Start和Awake哪里不同 5、Unity中Update与FixedUpdate的区别,怎么设置Fixed…

C++ 字面量

在编译之前就已经知道的值。字面量的形式和值决定了它的数据类型。 整型字面量 整型字面值具体的数据类型由它的值和符号决定。默认情况,十进制字面量是带符号数,八进制和十六进制字面值既可能是带符号的也可能是无符号的。十进制字面值的类型是int、l…

字节码进阶之JVM Attach API详解

字节码进阶之JVM Attach API详解 文章目录 字节码进阶之JVM Attach API详解附加到虚拟机加载代理和获取信息分离虚拟机 使用Attach API的基本步骤1. **获取虚拟机实例**:2. **附加到虚拟机**:3. **加载代理或获取信息**4. **从虚拟机分离**:…

链表的中间结点-力扣

1、题目描述 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海…

【RocketMQ系列十】RocketMQ的核心概念说明

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…