Dijkstra算法——java实现

2023-05-16

面试时遇到Dijkstra算法,这个算法我是知道的,但是没具体写过,所以答题比较慢,抽时间实现了下这个算法。

 

Dijkstra算法基本思路:

该算法的基本思路是这样的,从起始点开始,将未访问过的相邻节点加入一个优先队列,类似于广度优先算法,然后从该队列中取出节点考虑:

对于单个节点,找出其所有相邻边,对于其邻接节点,计算总长度,如果该邻接节点的长度大于从该节点的长度,则更新路径为该节点。

 

具体代码如下:

package src.arithmetic;


import java.util.*;
import java.util.Map.Entry;

/**
 * Dijkstra算法
 */
public class Dijkstra
{
    public static class Node
    {
        public int nodeId;//节点标识
        public List<Edge> adjEdge;//相邻边边
        public Node(int nodeId, List<Edge> adjEdge) {
            this.nodeId = nodeId;
            this.adjEdge = adjEdge;
        }
    }

    /**
     * 发出边
     */
    public static class Edge
    {
        public int endNode;//终止节点
        public int weigth;//边的权重
        public Edge(int endNode,int weigth)
        {
            this.endNod
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dijkstra算法——java实现 的相关文章

  • 上传进度条 Java Servlet?

    我想使用 servlet 显示上传进度条 我尝试过Ajax iFrame 技术 页面没有重新加载 文件也被上传 但是 进度条没有出现 有没有可用于 javaservlts 的 jQuery 进度插件 Thanks 我强烈推荐jQuery 上
  • Jackson JSON + Java 泛型

    我正在尝试将以下 JSON 反序列化 映射到List
  • 如何在 Android 应用程序中隐藏 Flutterwave API 密钥

    我正在构建一个 Android 应用程序 目前正在将 Flutterwave 集成到我的应用程序中以进行支付 建议我永远不要将 Flutterwave API 密钥放在我的应用程序上 那么我该如何隐藏这些键呢 我正在使用 Retrofit
  • 自定义列表字段点击事件

    我正在编写一个应用程序 其中我创建了用于显示列表视图的自定义列表字段 我的 CustomListField 包含连续的一个图像和文本 我正在通过单击列表字段行获取字段更改侦听器 但我也想将字段更改侦听器放在图像上 谁能告诉我我该怎么做 这是
  • JAXB - 忽略元素

    有什么方法可以忽略 Jaxb 解析中的元素吗 我有一个很大的 XML 文件 如果我可以忽略其中一个大而复杂的元素 那么它的解析速度可能会快很多 如果它根本无法验证元素内容并解析文档的其余部分 即使该元素不正确 那就更好了 例如 这应该只生成
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 为什么解析这个 JSON 会抛出错误?

    我正在尝试解析这个 JSONObject query yahoo count 1 results rate Name USD INR id USDINR Time 12 19pm Date 10 31 2015 Bid 65 405 Ask
  • 如何在 IntelliJ IDEA 中运行 akka actor

    来自 Akka 网站文档 然后 这个主要方法将创建所需的基础设施 运行演员 启动给定的主要演员并安排 一旦主要参与者终止 整个应用程序就会关闭 因此 您将能够使用类似于以下的命令运行上面的代码 下列的 java classpath akka
  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp
  • UseCompressedOops JVM 标志有什么作用以及何时应该使用它?

    HotSpot JVM 标志是什么 XX UseCompressedOops我应该做什么以及什么时候使用它 在 64 位 Java 实例上使用它 与不使用它 时 我会看到什么样的性能和内存使用差异 去年大多数 HotSpot JVM 都默认
  • 类更改(例如字段添加或删除)是否保持 Serialized 的向后兼容性?

    我有一个关于 Java 序列化的问题 在这种情况下 您可能需要修改可序列化类并保持向后兼容性 我有丰富的 C 经验 所以请允许我将 Java 与 NET 进行比较 在我的Java场景中 我需要使用Java的运行时序列化机制序列化一个对象 并
  • Joshua Bloch 的构建器设计模式有何改进?

    早在 2007 年 我就读过一篇关于 Joshua Blochs 所采用的 构建器模式 的文章 以及如何修改它以改善构造函数和 setter 的过度使用 特别是当对象具有大量属性 其中大部分属性是可选的 时 本文对此设计模式进行了简要总结
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • 我所有的 java 应用程序现在都会抛出 java.awt.headlessException

    所以几天前我有几个工作Java应用程序使用Swing图书馆 JFrame尤其 他们都工作得很好 现在他们都抛出了这个异常 java awt headlessexception 我不知道是什么改变了也许我的Java版本不小心更新了 谢谢你尽你
  • Android ScrollView,检查当前是否滚动

    有没有办法检查标准 ScrollView 当前是否正在滚动 方向是向上还是向下并不重要 我只需要检查它当前是否正在滚动 ScrollView当前形式不提供用于检测滚动事件的回调 有两种解决方法可用 1 Use a ListView并实施On
  • Java 中清除嵌套 Map 的好方法

    public class MyCache AbstractMap
  • Selenium 单击在 Internet Explorer 11 上不起作用

    我尝试在 Internet Explorer 上单击 selenium 但它不起作用 我努力了element click moveToElement element click build perform javascript没事了 事实上
  • 检测到 JVM 正在关闭

    我有一个使用 addShutdownHook 处理 Ctrl C 的 Swing 应用程序 它工作正常 直到我的关闭任务之一调用一个在正常情况下更改 JLabel 文本的函数 此时它挂起 我认为问题是 Swing EDT 已终止或正在等待某
  • Spring 作为 JNDI 提供者?

    我想使用 Spring 作为 JNDI 提供程序 这意味着我想在 Spring 上下文中配置一个 bean 可以通过 JNDI 访问该 bean 这看起来像这样
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ

随机推荐

  • 基于VTK的任意平面切割

    这位 小兵 太传奇了 xff0c 先收藏 xff0c 再学习 xff0c http www cnblogs com dawnWind archive 2013 02 17 3D 06 html 先贴码 以后再 切割介绍 对于一个模型的切割需
  • 百度OCR接口使用

    最近在研究ocr识别 也对比了一些的方法 现在来介绍一下 调用百度提供的ocr接口 小量调用的话 是不收费的 1 首先 你要有一个百度账号 如果已经有的话 登录进去会进入到这样一个界面 点击 34 创建应用 34 创建成功后 返回应用列表
  • Python 元组(tuple)剖析详解

    目录 概念元组的常见操作 概念 元组 span class token punctuation span 是一个有序 span class token punctuation span 可重复的集合 特点 span class token
  • Dom型XSS跨站脚本攻击和防御

    在前面的文章中 xff0c 我们讲了持久型XSS和反射型XSS 我个人觉得这些命名真的很贴切 xff0c 反应了概念的本质 无论是持久型XSS还是反射型XSS 恶意的js脚本内容都需要由服务端返回给用户 xff0c 今天我们要说的Dom型X
  • 编译错误导致浪费10多分钟, 编译错误的提示:xxx does not name a type xxx

    最近 xff0c 我在google protobuf 协议文件xxx pb增加了结构体 类 请求字段 xff0c 生成xxx h和xxx cpp文件 xff0c 然后放到对应目录进行编译 xff0c 奇葩的是 xff0c 编译出错 xff0
  • 树莓派上安装php

    简单东西 xff1a sudo apt get install php 然后 xff1a pi 64 raspberrypi taoge cat test php lt php aa 61 60 echo 39 hello 39 39 xx
  • 结构体和数组

    结构体中可以有数组类型的成员 xff0c 数组的元素也可以是结构体 数组和结构体的初始化是一样的 xff0c 都是把各个元素放在一个大括号里 xff0c 各个成员用逗号分隔 结构体数组使用示例 include lt stdio h gt i
  • iOS聊天室 简单的对话聊天界面(cell自适应高度)

    文章目录 难点思路需要用到的方法的大致解析 xff08 只是简单的介绍 xff0c 如果想要仔细理解推荐再去看看别的博客 xff09 GitHub地址代码效果图 难点 因为聊天长度不一样 xff0c 需要设置自适应高度发送信息后 xff0c
  • navicat链接centos7数据库失败Authentication plugin ‘caching_sha2_password‘ cannot be loaded: dlopen(../Frame

    重新配置云上数据库 mysql u root p use mysql select user host plugin authentication string from user G ALTER USER root 64 IDENTIFI
  • C语言中以字符串形式输出枚举变量

    1 枚举应用说明 每个枚举常量对应一个整形数字 xff0c 很多时候可以像整形一样使用 xff1b 但是如果要求打印枚举变量名的字符串 xff0c 办法也有很多 xff0c 查看网上方法几乎都需要转换 xff0c 要么用数组 xff0c 下
  • 定时器初值的计算方法

    定时器初值的计算方法 1 xff1a 定义 用户时间 xff1a Tuser 寄存器位数 xff1a Rn xff08 n 为 8 16 32分别代表 0xFF 0xFFFF 0xFFFFFFFF xff09 初始值 xff1a TCONH
  • iOS开发之NSAttributedString使用

    本文介绍了NSAttributedString和NSMutableAttributedString的简单用法 一 NSAttributedString介绍 摘自NSAttributedString h文件 span class hljs c
  • 阿里云添加安全组规则

    阿里云添加安全组规则 可以 参考 阿里云官方文档 xff1a https help aliyun com document detail 25471 html spm 61 5176 11065259 1996646101 searchcl
  • latex章节引用

    方法 xff1a 在章节后面直接添加 label 即可 xff0c 引用的时候使用 ref 可以是任意字符 参考 xff1a LaTeX 引用章节 公式和图表 Xovee CSDN博客 latex引用图表
  • Python之pip命令指定安装源和版本

    背景 用pip安装依赖包时默认访问 https pypi Python org simple 该路径经常出现不稳定以及访问速度非常慢的情况 xff0c 国内厂商提供的一些pipy镜像可以加快下载速度 xff0c 目前可用的有 xff1a 清
  • 从教程开始学习Rabbitmq

    Rabbitmq 入门概念 首先来介绍下Rabbitmq的一些概念 xff1a Producer xff1a 生产者 xff0c 生产者负责发送信息 xff08 messages xff09 Queue xff1a 队列 xff0c 队列是
  • 要看的书籍或视频——Java后端

    书单 xff1a 算法与数据结构 xff1a 数据结构 xff08 严蔚敏 xff09 大话数据结构 如果觉得教材无聊就可以看大话系列 xff0c 印象中里面还有很多诗 剑指Offer 程序员面试金典 编程珠玑 编程之美 牛客网 43 le
  • 丑数问题——动态规划、Java

    题目描述 把只包含因子2 3和5的数称作丑数 xff08 Ugly Number xff09 例如6 8都是丑数 xff0c 但14不是 xff0c 因为它包含因子7 习惯上我们把1当做是第一个丑数 求按从小到大的顺序的第N个丑数 这道题使
  • 字符串的排列(全排列)——Java、回溯法

    题目描述 输入一个字符串 按字典序打印出该字符串中字符的所有排列 例如输入字符串abc 则打印出由字符a b c所能排列出来的所有字符串abc acb bac bca cab和cba 输入描述 输入一个字符串 长度不超过9 可能有字符重复
  • Dijkstra算法——java实现

    面试时遇到Dijkstra算法 这个算法我是知道的 但是没具体写过 所以答题比较慢 抽时间实现了下这个算法 nbsp Dijkstra算法基本思路 该算法的基本思路是这样的 从起始点开始 将未访问过的相邻节点加入一个优先队列 类似于广度优先