java ----数据结构和算法

Java的数据结构和算法 今天我们来简单介绍一下Java的数据结构和算法。 一、数据结构 1、数据结构的分类 2、数据结构的基本功能 二、算法 1、算法是什么 2、算法的特点 一、1、数据结构是计算机组织、存储数据的方式。简单来说就是,数据按指定的规则进行存储,从而得到一个有固定存储格式的数据集合,就称之为“数据结构” 数据结构又分为:①数组 (Array) ②栈 (Stack) ③队列 (Queue) ④链表 (Linked ... 阅读详情

算法:

之前博主里转载了一篇非常详细的java十大排序的算法,里面包含了动图,代码和复杂度分析。
https://blog.youkuaiyun.com/delete_bug/article/details/106156040
冒泡
选择
插入
希尔
归并
快速
堆排序
计数排序
桶排序
基数排序

接下来是介绍几种高级算法

1 剪枝算法

在搜索算法中优化中,剪枝,就是通过某种判断,避免一些不必要的遍历过程,形象的说,就是剪去了搜索树中的某些“枝条”,故称剪枝。应用剪枝优化的核心问题是设计剪枝判断方法,即确定哪些枝条应当舍弃,哪些枝条应当保留的方法。
总之,剪枝策略,属于算法优化范畴;通常应用在DFS 和 BFS 搜索算法中;剪枝策略就是寻找过滤条件,提前减少不必要的搜索路径。

1.1剪枝的原则

1) 正确性
正如上文所述,枝条不是爱剪就能剪的. 如果随便剪枝,把带有最优解的那一分支也剪掉了的话,剪枝也就失去了意义. 所以,剪枝的前提是一定要保证不丢失正确的结果
2)准确性
在保证了正确性的基础上,我们应该根据具体问题具体分析,采用合适的判断手段,使不包含最优解的枝条尽可能多的被剪去,以达到程序“最优化”的目的. 可以说,剪枝的准确性,是衡量一个优化算法好坏的标准.
3)高效性
设计优化程序的根本目的,是要减少搜索的次数,使程序运行的时间减少. 但为了使搜索次数尽可能的减少,我们又必须花工夫设计出一个准确性较高的优化算法,而当算法的准确性升高,其判断的次数必定增多,从而又导致耗时的增多,这便引出了矛盾. 因此,如何在优化与效率之间寻找一个平衡点,使得程序的时间复杂度尽可能降低,同样是非常重要的. 倘若一个剪枝的判断效果非常好,但是它却需要耗费大量的时间来判断、比较,结果整个程序运行起来也跟没有优化过的没什么区别,这样就太得不偿失了.

对剪枝算法讲的非常透彻的一个视频,因为有些博客描述的不是很好,博主没有找到好一点的博客,所以推荐这个视频:
https://www.bilibili.com/video/BV1Bf4y11758?from=search&seid=14771482401397576676

2 回溯算法

回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。

其实回溯法在很多应用场景出现过,递归,图的遍历,动态规划等。
https://blog.youkuaiyun.com/weixin_43208423/article/details/101081544?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162829566416780271540917%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162829566416780271540917&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~hot_rank-5-101081544.first_rank_v2_pc_rank_v29&utm_term=%E5%9B%9E%E6%BA%AF%E7%AE%97%E6%B3%95&spm=1018.2226.3001.4187

3最短路径算法

从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路径。解决最短路的问题有以下算法,Dijkstra 算法,Bellman-Ford 算法,Floyd 算法和 SPFA算法等。
这是单源路劲算法:它求出的是一条路径
Dijkstra 算法
单是有时候需要求图中任意两节点之间的距离 ------->Floyd(费罗伊德)算法
文章的话再上边那篇里有,第一次学还是先看一下视频,比较好理解,这个算法比较难一点,我也就看了一百遍
https://www.bilibili.com/video/BV1LE411R7CS?from=search&seid=14785761868390793110
最主要的思想就是找中间点,最后更新好两个矩阵以后也是以中间点的思想取遍历图的,如果还是不懂可以私信作者,我们一起交流

SPFA算法:这个算法写的还是比价简单的,容易理解
https://blog.youkuaiyun.com/qq_35644234/article/details/61614581

64最小生成树算法–(Kruskal 和prim)

https://www.bilibili.com/video/BV1Eb41177d1?from=search&seid=2252166645685418420

在这里插入图片描述
在组织图的过程中避免掉环
在这里插入图片描述
每次更新表,扫描表,比较替换。

数据结构

散列表(哈希表)

线性探测表和拉链法

红黑树

https://www.cnblogs.com/skywang12345/p/3245399.html
为什么不使用AVL树而使用红黑树?
红黑树和AVL树都是最常用的平衡二叉搜索树,它们的查找、删除、修改都是O(lgn) time
AVL树和红黑树有几点比较和区别:
(1)AVL树是更加严格的平衡,因此可以提供更快的查找速度,一般读取查找密集型任务,适用AVL树。
(2)红黑树更适合于插入修改密集型任务。
(3)通常,AVL树的旋转比红黑树的旋转更加难以平衡和调试。

B树

https://blog.youkuaiyun.com/c395565746c/article/details/6545106

图

https://blog.youkuaiyun.com/qq_30815237/article/details/99708124?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%20%E5%9B%BE&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-5-.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187

哈夫曼编码

https://blog.youkuaiyun.com/bjweimengshu/article/details/105630052?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162832539216780255213198%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162832539216780255213198&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-105630052.first_rank_v2_pc_rank_v29&utm_term=%E5%93%88%E5%A4%AB%E6%9B%BC%E7%BC%96%E7%A0%81&spm=1018.2226.3001.4187
后续会在公众号发布数据结构和算法的面试题,请读者持续关注(小小李童鞋)
在这里插入图片描述

JAVA面试大全之数据结构和算法篇 消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,目前可以解密逆向的只有CRC32算法,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。消息摘要算法不存在密钥的管理与分发问题,适合于分布式网络上使用。消息摘要算法主要应用在“数字签名”领域,作为对明文的摘要算法。何谓数字签名?数字签名主要用到了非对称密钥加密技术与数字摘要技术。数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。 阅读详情

相关推荐

地平线天工开物AI开发平台实战:从量化训练到模型部署的完整指南

本文提供了地平线天工开物(OpenExplorer)AI开发平台的实战指南,详细解析了从量化训练到模型部署的完整流程。文章重点对比了量化感知训练(QAT)与训练后量化(PTQ)两条核心路径的优劣与适用场景,并分享了图像分类模型PTQ部署的实战经验与常见问题调试技巧,旨在帮助开发者高效地将AI模型部署到地平线AI芯片上。

weixin_29046035的博客 456

Java实现数据结构数组的添加add、插入insert、删除delete操作

package com1; /** * @author yangxin_ryan * Java使用数组实现数组的 * add(ele) * insert(ele, index) * delete(index) * 三个函数功能 */ public class Demo1 { private Object[] elements; public Demo1(){ elements = new Object[0]; } /** *.

杨鑫newlife的专栏 3243

LSF0108 level shift设计使用及debug流程

目录 初版设计 测试出现的问题1 解决问题(尝试1) 测试出现的问题2 解决问题2-1 解决问题2-2 单Port测试结果 所有Port均连接测试结果 初版设计 此电路的应用场景在于将LCD屏幕连接到FPGA上,进而通过FPGA中设计的硬件电路来驱动LCD屏幕,验证数字硬件电路设计的正确性。因此需要一个转接板位于FPGA和LCD屏幕之间,将二者连接起来。 转接板的硬件电路设计主要存在以下需求: 实现3.3V和1.8V之间的同时双向逻辑转换(LCD屏幕电平为3.3V,FPGA电平为1.

moshanghongfeng的博客 7560

Java数据结构和算法

【前言】 Java数据结构和算法 BliBli视频链接地址为:《Java 数据结构与算法视频教程全集(195P)| 50 小时从入门到精通》 需要完整笔记课件等资料请联系邮箱:shaneholmes@qq.com 关于我的GitHub 以下是Java数据结构和算法的代码 Java数据结构和算法 ...

ShaneHolmes 2009

QGIS实战:5分钟搞定谷歌地图、高德、天地图等多源地图加载(附最新图源URL)

本文详细介绍了如何在QGIS中快速加载谷歌地图、高德、天地图等多源地图,提供2023年验证可用的最新图源URL和配置步骤。从环境准备到高级技巧,涵盖国内外主流地图服务的完整解决方案,帮助用户提升GIS工作效率。

weixin_29210759的博客 1198

从静态到动态:如何用Deformable 3DGS和4DGS实现高效动态场景建模

本文深入探讨了Deformable 3DGS和4DGS在动态场景建模中的技术突破,详细解析了这两种方法如何高效处理动态内容。Deformable 3DGS通过引入时间维度的变形场扩展传统3DGS,而4DGS则采用四维时空体素分解方法,两者均显著提升了动态场景建模的效率和质量,适用于虚拟现实、增强现实等应用场景。

weixin_29063035的博客 433

Java数据结构和算法笔记总结

第 1章 数据结构和算法概述 数据结构和算法的关系 数据 data 结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。 要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决. 程序 = 数据结构 + 算法 数据结构是算法的基础, 换言之,想要学好算法,需要把数据结构学到位。 数据结构和算法的应用 修路问题 => 最小生成树(加权值)【数据结构】+ 普利姆算法 最短路径问题 => 图+弗洛

笔记别偷看 1667

YOLOv8中的C2f模块代码详解

在YOLOv8网络结构中,C2f模块(CSP Bottleneck with 2 Convolutions)是一个关键组件,用于实现跨阶段部分聚合

zzzyyy8的博客 3万+

【JAVA数据结构和算法】

栈(Stack):遵循“先进后出(LIFO)”,常用操作: push() (入栈)、 pop() (出栈)、 peek() (查看栈顶),Java 中可通过 Deque 接口实现(推荐替代 Stack 类)。- 队列(Queue):遵循“先进先出(FIFO)”,常用操作: offer() (入队)、 poll() (出队)、 peek() (查看队首),典型实现类如 LinkedList 、 ArrayDeque。- TreeSet :基于红黑树,有序(自然排序或自定义排序)、去重。

2501_92635332的博客 419

生成模型实战 | 基于Transformer生成音乐

本文介绍了基于Transformer架构的音乐生成方法,将音乐视为一系列事件序列进行处理。与将音乐表示为多维图像的MuseGAN不同,该方法使用类似GPT的仅解码器模型,基于先前事件预测下一个音乐事件。模型使用MIDI格式的钢琴音乐数据,通过分词处理将音符转换为note-on、note-off、time-shift和velocity四种事件类型,共388个独特词元,映射为索引序列后输入网络。训练完成后,可通过调整温度参数控制生成音乐的新颖性,从而创作出风格类似训练数据且连贯逼真的音乐作品。

盼小辉丶的博客 5800

dolphinscheduler集群服务一键安装启动实现流程剖析

通过以上分析我们基本梳理清楚了整个dolphinscheduler项目的一键安装启动逻辑, 我们现在在通过一张图正好理一下整个实现流程。关于一键停止集群服务及一件查询集群各个角色服务实例运行状态的实现也都在stop-all.sh/status-all.sh及dolphinscheduler-daemon.sh这三个脚本中, 有兴趣自行研究。写这篇文章的核心目的不仅在于给大家分享如何优秀的开源项目的一键安装部署的实现过程。

最爱嫣夜来 1207

图解Java数据结构和算法

老韩图解Java数据结构和算法-结束语(卖油翁和老黄牛).avi 老韩图解Java数据结构和算法-骑士周游回溯算法用贪心算法优化.avi 老韩图解Java数据结构和算法-骑士周游回溯算法代码实现(3).avi 老韩图解Java数据结构和算法-骑士周游回溯算法代码实现(2).avi 老韩图解Java数据结构和算法-骑士周游回溯算法代码实现(1).avi 老韩图解Java数据结构和算法-骑士周游问题思...

m0_46238194的博客 397

Python 爬虫实战:爬取 B 站 UP 主投稿数据,分析更新频率与粉丝互动

摘要:本文基于Python技术实现B站UP主投稿数据的自动化爬取与分析。通过解析B站WBI签名机制和API接口,获取UP主视频的标题、播放量、点赞数等核心数据。采用时间序列分析统计更新频率,结合相关性分析挖掘内容特征与粉丝互动的关联。结果显示编程类视频播放量最高,10-20分钟时长的视频表现最佳,投币数与播放量相关性达0.92。文章详细介绍了接口分析、反爬应对等关键技术,为内容创作者优化策略提供数据支持,同时强调遵守平台规范的爬取原则。

2503_91057718的博客 1535

一网打尽Java数据结构和算法

数据结构和算法:Java 速查表

u013643074的博客 1360

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JAVA数据结构和算法

数据结构和算法 1 数据结构和算法概述 1.1 什么是数据结构? 官方解释: 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。 大白话: 数据结构就是把数据元素按照一定的关系组织起来的集合,用来组织和存储数据 1.2 数据结构分类 传统上,我们可以把数据结构分为逻辑结构和物理结构两大类。 1.2.1 逻辑结构分类 逻辑结构分类: 逻辑结构是从具体问题中抽象出来的模型,是抽象意义上的结构,按照对象中数据元素之间的相互关系分类。 a.集合结构:集合结构中数据

GitHub:https://github.com/myp020301 461

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java版数据结构和算法+AI算法课程

Java版数据结构和算法+AI算法课程

qq_33736758的博客 889

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java数据结构和算法

Java数据结构和算法(一)——简介 Java数据结构和算法(二)——数组 Java数据结构和算法(三)——冒泡、选择、插入排序算法 Java数据结构和算法(四)——栈 Java数据结构和算法(五)——队列 Java数据结构和算法(六)——前缀、中缀、后缀表达式 Java数据结构和算法(七)——链表  Java数据结构和算法(八)——递归  Java数据结构和算法(九)——高级排序...

xjanting的博客 5405

北风网java数据结构和算法_浅谈Java数据结构和算法

今天的突然看集合底层的时候发现了好多算法和数据结构。再次就比较一下和汇总一下。数据结构分类:线性结构和非线性结构问题一:什么是线性和非线性;我个人的理解是:数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构;线性结构包括:数组,链表,队列,栈;非线性结构包括:树,图,表;详解:一.线性结构1.数组特点:我们都知道数组中的元素在内存中连续存储的,可以根据是下标快速访问元素,因此...

weixin_30536861的博客 213

Java版数据结构和算法+AI算法课程2

精品课程推荐:Java版数据结构和算法+AI算法课程AI人工智能时代,Java从业者必学科目。

qq_33736758的博客 550

Java基础数据结构和算法

数据结构 Array数组 和C/C++以及其他语言一样,Java中的数组有差不多一样的语法。只是Java中除了8中基本类型,数组也是作为对象处理的,所以创建对象时也需要使用new关键字。和大多数编程语言一样,数组一旦创建,大小便不可改变。 算法 二分查找 对于有序数组,二分查找的效率在大数据量的情况下,效率明显: private static int find(int [] a

goup的专栏 3万+

Java数据结构和算法(一)

在表4.7、表4.8中,可以看到从中缀到后缀的转换过程中,操作符的顺序是颠倒的。在计算机科学中,队列是一种数据结构,有点类似栈,只是在队列中第一个插入的数据项会最先被移除(先进先出,FIFO),而在栈中,最后插入的数据项最先被移除(LIFO)。队列的作用就像电影院的人们站成的排一样,第一个进入队尾的人将最先到达的队头买票,最后排队的人最后才能买到票。如果这样做,isEmpty()、isFull()和size()历程会相当复杂,因为就像前面讲过的那样,数据项的序列或者被折成两段,或者是连续的一段。

kelai_6792的博客 930
上一篇: 六万+字带你了解数据库---mysql--JDBC-Redis--MongoDB
下一篇: 本文主要用一周的时间总结了一下spring全家桶的知识体系,现分享给读者朋友
凌晨里的无聊人
博客等级 码龄8年 2320粉丝 206原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨里的无聊人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值