数据结构与算法
文章平均质量分 94
CstomRita
又是元气满满的一天
展开
-
【ADT】第六章 堆—优先队列
之前在链表ADT中涉及到了队列,LInkedList通过双链表实现了队列先进先出的功能 此次提出一个优先队列的概念,它依旧满足队列一端入队一端出队的原则,唯一的区别在于出列的工作是找出、返回并删除优先队列中的最小值 优先队列中的操作仅仅限于插入和最小值,不能排序、也不能find(非最小值) 一次insert(入队)的平均为O(1),删除最小元(出队)平均时间O(logN)对优先队列的实现...原创 2018-08-26 17:40:26 · 632 阅读 · 0 评论 -
【ADT】第六章 堆—优先队列
之前在链表ADT中涉及到了队列,LInkedList通过双链表实现了队列先进先出的功能 此次提出一个优先队列的概念,它依旧满足队列一端入队一端出队的原则,唯一的区别在于出列的工作是找出、返回并删除优先队列中的最小值 优先队列中的操作仅仅限于插入和最小值,不能排序、也不能find(非最小值) 一次insert(入队)的平均为O(1),删除最小元(出队)平均时间O(logN)对优先队列的实现...原创 2018-08-26 19:11:14 · 498 阅读 · 0 评论 -
【ADT】第三章 表、栈和队列
抽象数据类型ADT是带有一组操作的对象的集合,诸如表、图以及它们各自的操作一起形成的对象等等本章将讨论基于表ADT的实现,主要是数组与链表1 表ADT1.1 数组1.2 链表1.2.1 单向链表1.2.2 双向链表1.2.3 编程实现2 Collection API2.1 基于数组:ArrayList、Vector(Stack)2.1.1 ArrayLi...原创 2018-08-22 22:15:47 · 446 阅读 · 0 评论 -
【总论】第二章·算法分析
算法分析算法分析主要集中在时间复杂度和空间复杂度 这里也只是有所了解,算法中常见的就那几个级别,具体还是要看后面的算法再了解大O表示法时间复杂度常见复杂度对数~分治策略,二分策略空间复杂度大O表示法T(N) = O(f(N))表示T(N)de增长率小于等于f(N),也是在算法分析中最主要使用的表达方式。 f(N)表示的是算法T(N)增长率的...原创 2018-08-17 11:05:29 · 141 阅读 · 0 评论 -
【ADT】 第四章 树
树,大部分操作的运行时间平均为O(log N) 树是按照大小顺序存储的,不可重复的集合 Collection中基于二叉查找树实现了TreeSet和TreeMap类1 树1.1 基础知识1.2 树节点的声明1.3 树的遍历1.3.1 先序遍历1.3.2 中序遍历1.3.3 后序遍历2 二叉树2.1 二叉查找树查找操作insertremove劣势2...原创 2018-08-23 21:57:30 · 466 阅读 · 0 评论 -
【ADT】第五章 散列
散列表ADT是一个包含一些项的具有固定大小的数组 散列是一种以常数平均时间O(1)执行插入、删除、查找的技术 JavaCollection中基于散列技术实现了HashSet、HashMap 不支持排序、findMin、findMax等操作 散列表一般是基于HashCode实现散列函数的,故散列表中存储的对象需要hashcode()和equals()方法1 散列ADT1.1 基...原创 2018-08-24 22:32:03 · 1221 阅读 · 0 评论 -
【最短路径算法】迪杰斯特拉算法
目录应用场景图的存储结构 —— 邻接矩阵算法思想举例子说明具体思路伪代码算法实现应用场景 这个算法用于解决图中单源最短路径问题(单源节点是指给定源节点)求图中其它节点到此源节点的最短路径。给定源节点a,求节点b到a的最短距离。 对带权图(有无向均可)寻找最短路径 对不含负权的图来讲,是目前最快的单源最短路径算法 时间复杂度O(n2)...原创 2019-08-05 17:41:08 · 453 阅读 · 0 评论 -
【算法】排列组合问题
排列组合问题从m个数里面选n个(m >= n)全部用到 栈的存储结构 + 递归方法用栈存储选取的那N个数,选取就push,换一个就pop再push递归方法:要选取n个数,已经选取了k个,k == n时表示一种组合结果完成,选择一个再之后递归(k+1)Rank1 解决 m n问题这是最简单的问题,选择n个数,每个数有m个选择每次选择时只需要循环这m个数:push()递...原创 2019-08-17 20:02:37 · 650 阅读 · 0 评论