有哪些JAVA必须掌握的数据结构和算法

发布时间:2021-10-23 16:39:40 作者:iii
来源:亿速云 阅读:158

本篇内容主要讲解“有哪些JAVA必须掌握的数据结构和算法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些JAVA必须掌握的数据结构和算法”吧!

常见的数据结构

链表

LinkedHashSet LinkedList 底层数据结构由链表和哈希表组成。
数据的添加和删除都较为方便,就是访问比较耗费时间。

数组

ArrayList 访问数据十分简单,而添加和删除数据比较耗工夫

栈 (LIFO)

队列 (FIFO)

哈希表 HashSet

二叉树

删除数据的时候 如果节点没有子节点 直接删 如果有一个 删了后子节点补上,如果有两个,删掉后从左子树中中找最大的补上

比较的次数取决于树的高度。所以如果结点数为n,而且树的形状又较为均衡的话,比较大小和移动的次数最多就是log2n。因此,时间复杂度为O(logn)。但是,如果树的形状朝单侧纵向延伸,树就会变得很高,此时时间复杂度也就变成了O(n)。

常见的算法整理

排序

数组查找

图的搜索

安全算法

其他算法

【拓展】

  1. 图的表示:邻接矩阵和邻接表
    遍历算法:深度搜索和广度搜索(必学)
    最短路径算法:Floyd,Dijkstra(必学)
    最小生成树算法:Prim,Kruskal(必学)
    实际常用算法:关键路径、拓扑排序(原理与应用)
    二分图匹配:配对、匈牙利算法(原理与应用)
    拓展:中心性算法、社区发现算法(原理与应用)

2.图还是比较难的,不过我觉得图涉及到的挺多算法都是挺实用的,例如最短路径的计算等,图相关的,我这里还是建议看书的,可以看《算法第四版》。

3、搜索与回溯算法

贪心算法(必学)
启发式搜索算法:A*寻路算法(了解)
地图着色算法、N 皇后问题、最优加工顺序
旅行商问题

这方便的只是都是一些算法相关的,我觉得如果可以,都学一下。像贪心算法的思想,就必须学的了。建议通过刷题来学习,leetcode 直接专题刷。

4、动态规划

树形DP:01背包问题
线性DP:最长公共子序列、最长公共子串
区间DP:矩阵最大值(和以及积)
数位DP:数字游戏
状态压缩DP:旅行商

我觉得动态规划是最难的一个算法思想了,记得当初第一次接触动态规划的时候,是看01背包问题的,看了好久都不大懂,懵懵懂懂,后面懂了基本思想,可是做题下不了手,但是看的懂答案。一气之下,再leetcdoe专题连续刷了几十道,才掌握了动态规划的套路,也有了自己的一套模板。不过说实话,动态规划,是考的真他妈多,学习算法、刷题,一定要掌握。这里建议先了解动态规划是什么,之后 leetcode 专题刷,反正就一般上面这几种题型。

5、字符匹配算法

正则表达式
模式匹配:KMP、Boyer-Moore

6、流相关算法

最大流:最短增广路、Dinic 算法
最大流最小割:最大收益问题、方格取数问题
最小费用最大流:最小费用路、消遣

到此,相信大家对“有哪些JAVA必须掌握的数据结构和算法”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. 数据结构和算法 其一
  2. Java数据结构和算法系列———队列

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:JVM工作原理和特点是什么

下一篇:JVM崩溃的原因及解决方法是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》