
【数据结构与算法(Java)】
文章平均质量分 76
数据结构与算法,Java语言实现
好饿呀~~~
努力学习呀,为了梦想!!!
展开
-
AOV与AOE网
一. 拓扑排序 - AOV网1. 一些概念**DAG(directed acycline graph):**有向无环图。检查一个有向图是否存在环:从有向图上某个顶点v出发遍历,DFS(v)结束之前,出现一条从顶点u到v的回边,u在生成树上是v的子孙,则有向图中必定存在包含顶点v和u的环。**AOV网(Activity On Vertex Network):**在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系。这样的有向图为顶点表示活动的网,我们称为AOV网。AOV网中不应该出原创 2021-12-27 23:10:40 · 6259 阅读 · 0 评论 -
哈希表平均查找长度
将关键字序列(7、8、30、11、18、9、14)散列存储到散列表中。散列表的存储空间是一个下标从0开始的一维数组。散列函数为: H(key) = (key*3) MOD 7,处理冲突采用线性探测再散列法,要求装填(载)因子为0.7。(1) 请画出所构造的散列表;(2) 分别计算等概率情况下查找成功和查找不成功的平均查找长度。一、查找成功平均长度通过公式计算出存放的位置,如果该位置已经有数字了,往后找到一个空的放下。存放示意图存放位置0123456789存放数字714 8 转载 2021-12-27 23:10:12 · 30206 阅读 · 7 评论 -
java字符串操作
java字符串操作操作一:字符串->字符数组这种操作适用于给定了字符串,但实现过程需要对字符串的某些字符进行修改。s = "abc";char[] str = s.toCharArray();操作二:字符串->访问某字符这种操作和上面的操作不同,上面是要对字符串的某字符进行修改,而该操作只是提取判别某字符。s = "abc";x = s.charAt(1);///输出x的值为'b'操作三:字符数组->字符串此操作一般用于操作一将字符串转换为字符数组并实现代码之后,原创 2021-12-18 19:24:13 · 123 阅读 · 0 评论 -
常见算法1:二分查找算法(非递归)
二分查找算法(非递归)1 二分查找算法(非递归)介绍前面我们讲过了二分查找算法,是使用递归的方式,下面我们讲解二分查找算法的非递归方式二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n步,假设从[0,99]的队列(100个数,即n=100)中寻到目标数30,则需要查找步数为㏒₂100 , 即最多需要查找7次( 2^6 < 100 < 2^7)2 二分查找算法(非递归)代原创 2021-12-12 22:48:34 · 117 阅读 · 0 评论 -
第 13 章 图
第 12 章 图1 图1.1 图的基本介绍为什么要有图1)前面我们学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系2)树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时,3)这里我们就用到了图1.2 图的举例说明图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:1.3 图的基本术语顶点(vertex)边(edge)路径无向图(右图)有向图带权图1.4 图的表示方式图的表示原创 2021-12-12 22:43:13 · 103 阅读 · 0 评论 -
第 12 章 多路查找树
1 多路查找树1.1 二叉树与B树二叉树的问题分析二叉树的操作效率较高,但是也存在问题, 请看下面的二叉树:二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿), 就存在如下问题:问题1:在构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响问题2:节点海量,也会造成二叉树的高度很大,会降低操作速度.多叉树在二叉树中,每个节点有数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和转载 2021-12-12 22:40:43 · 93 阅读 · 0 评论 -
第 11 章 树结构实际应用
1 树结构实际应用1.1 堆排序1.1.1 堆排序基本介绍堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有要求结点的左孩子的值和右孩子的值的大小关系。每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆大顶堆举例说明...原创 2021-11-30 12:21:53 · 518 阅读 · 0 评论 -
第 10 章 树结构基础部分
第 10 章 树结构基础部分1 树结构基础部分1.1 为什么需要树这种数据结构1)数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低2)链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可, 删除效率也很好)。缺点:在进行检索时,效率仍然较低,比如(检索某个值,需要从头节点开始遍历) 【示意图原创 2021-11-11 15:48:45 · 137 阅读 · 0 评论 -
第 9 章 哈希表
第 9 章 哈希表看一个实际需求,google公司的一个上机题:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查找到该员工的 所有信息.要求: 不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列)1 哈希表1.1 哈希表简介散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散原创 2021-10-05 00:17:29 · 111 阅读 · 0 评论 -
第 8 章 查找算法
第 八 章 查找算法顺序(线性)查找二分查找/折半查找插值查找斐波那契查找原创 2021-10-05 00:11:29 · 106 阅读 · 0 评论 -
第 7 章 排序
相关排序算法原创 2021-10-04 23:31:52 · 174 阅读 · 0 评论 -
第 6 章 递归
第 6 章 递归1 递归的应用场景看个实际应用场景,迷宫问题(回溯), 递归(Recursion)原创 2021-09-13 23:18:34 · 89 阅读 · 0 评论 -
第 5 章 栈
第 5 章 栈1 栈的一个实际需求请输入一个表达式计算式:[722-5+1-5+3-3] 点击计算【如下图】请问: 计算机底层是如何运算得到结果的?注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 - 5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我们讨论的是这个问题。-> 栈2 栈的介绍栈的英文为(stack);栈是一个先入后出(FILO-First In Last Out)的有序列表;栈(stack)是限制线性表中元素的插入原创 2021-08-06 22:12:34 · 355 阅读 · 0 评论 -
第 4 章 链表
第 4 章 链表1、链表(Linked List)介绍1.1、内存结构内存上来看:链表存储空间不连续(不像数组)1.2、逻辑结构逻辑上来看:链表属于线性结构1.3、链表特点1.链表是以节点的方式来存储,是链式存储2.data 域存放数据,next 域指向下一个节点,最后为null代表结束3.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定2、链表应用场景2.1、水浒英雄榜使用带 head 头的单向链表实现【水浒英雄排行榜管理】2.2、链表节点定义//no :英雄编号原创 2021-07-08 13:53:43 · 195 阅读 · 0 评论 -
第 3 章:稀疏数组和队列
面试/考试速查,常考数据结构类型速查速补表P16~P23 单链表P24~P26 双向链表P27~P29 约瑟夫环P30~P35 栈·栈实现计算器P36~P42 前缀,中缀,后缀表达式,逆波兰计算器的实现P43~P49 递归,迷宫回溯,八皇后P50~P53 排序算法基础54~56 冒泡排序57~59 选择排序60~62 插入排序63~65 希尔排序66~68 快速排序69~71 归并排序72~75 基数排序76各种排序的比较*127~131 二叉排序树132~134 BS原创 2021-07-05 17:16:22 · 192 阅读 · 0 评论 -
数据结构前言
数据结构和算法的关系数据结构(data structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决.程序 = 数据结构 + 算法数据结构是算法的基础, 换言之,想要学好算法,需要把数据结构学到位。...原创 2021-07-05 12:49:55 · 127 阅读 · 0 评论