2022
08-12
08-12
Java数据结构--时间和空间复杂度
目录一、算法效率二、时间复杂度 1.概念2.大O的渐进表示法3.练习练习一:计算阶乘递归factorial的时间复杂度练习二:计算斐波那契递归fibonacci的时间复杂度三、空间复杂度 1.概念2.练习练习一:计算bubbleSort的空间复杂度练习二:计算fibonacci的空间复杂度练习三:计算阶乘递归Factorial的时间复杂度四、总结一、算法效率算法效率分析分为两种:时间效率和空间效率时间效率时间效率被称为时间复杂度,主要时衡量一个...
继续阅读 >
目录一、二叉树的顺序存储1.堆的存储方式2.下标关系二、堆(heap)1.概念2.大/小根堆2.1小根堆2.2大根堆3.建堆操作3.1向下调整4.入队操作4.1向上调整4.2push入队的完整代码展示5.出队操作5.1pop出队代码完全展示6.查看堆顶元素7.TOK问题7.1TOPK8.堆排序文章内容介绍大纲一、二叉树的顺序存储1.堆的存储方式使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全...
目录1、逻辑结构和物理结构2、顺序结构,链式结构,栈,队列,二叉树二叉树普通二叉树:满二叉树:完全二叉树:平衡二叉树:排序二叉树:二叉树的遍历:总结1、逻辑结构和物理结构逻辑结构: &n...
问题介绍:用二维数组表示一个迷宫,设置迷宫起点和终点,输出迷宫中的一条通路实现思路:二维数组表示迷宫:0表示路且未走过、1表示墙、2表示通路,3表示已经走过但走不通设置寻路方法setWay,传入地图和坐标参数默认方向策略:下、右、上、左假定传入的店没有走过且可以走通,将其值置为2,然后向下寻路,也就是将坐标(i+1,j)传入寻路方法中进行递归寻路,向下移动后,再次按照方向策略进行寻路,即再向下寻路,直到遇到死...
目录单向链表单链表图解代码双向链表编码总结单向链表单向链表比顺序结构的线性表最大的好处就是不用保证存放的位置,它只需要用指针去指向下一个元素就能搞定。单链表图解图画的比较粗糙,简单的讲解一下:上面四个长方形,每个长方形都是一个节点。在长方形中,一种包含两个东西,一个是当前节点的元素,一个是指向下一节点的地址。这个下一个节点的地址指向了下一个节点中的元素。以此类推。在最左边的叫做头节点,同样,最后面...
目录准备工作编码环节push方法pop方法empty方法全部代码总结准备工作工具:idea+jdk8技术要求:java基础语法编码环节首先,我们得先确定下来,用什么数据来模拟栈的操作。由于是一个一个的元素放入栈里面,我们可以考虑用数组来实现。以上是Java官方文档中的栈定义,我们也只需要实现三个方法:判断是否为空、移除栈顶对象、添加元素到栈的尾部所以我们事先得定义一个数组:Objects[]arr;数组定义好了之后呢,想想,我们怎么去获...
目录数据结构和算法关系高斯求和算法定义算法的特性算法设计的要求算法效率的度量方法函数的渐进增长总结数据结构和算法关系虽然这个标题起的叫数据结构,但是我却总结算法。。。我不是没事找抽,只是呢,在学数据结构的时候,算法是你肯定离不开的东西。你平时在网上看到的那些文章,在你不经意间搜的时候,是不是都是搜的数据结构与算法这七个字。这说明啥,这说明他们俩是离不开的。给你打个比方,你想看德云社相声(我也想看)...
目录基本概念和术语数据数据元素数据项数据对象结构数据结构逻辑结构与物理结构逻辑结构物理结构抽象数据类型总结基本概念和术语要想知道数据结构是什么,我们首先得去知道,数据和结构是什么;数据结构=数据+结构也就是说,我们先去研究数据,再去把这些数据组成一定得样子(结构),自然而然的成了数据结构数据数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别并输入给计算机处理的符号集合这样说可能还...
一、背景知识:树(Tree)在之前的笔记中,我们介绍的链表、栈、队列、数组和字符串都是以线性结构来组织数据的。本篇笔记要介绍的树采用的是树状结构,这是一种非线性的数据组织形式。树结构由节点和边构成,且不存在环。我们曾在线性表型的数据结构中介绍过循环链表和循环队列,这两种数据结构使得存储容器中的元素形成一个闭环,具体可参看“数据结构学习笔记”系列的相关博文,链接贴在下面:链表:https://www.jb51.net/artic...
一、链表1.1概述链表是真正动态的数据结构,最简单的动态数据结构,基本用于辅助组成其他数据结构。数据存储在“节点”(Node)中优点:真正的动态,不需要处理固定容量的问题缺点:丧失了随机访问的能力1.2链表使用的基本功能定义Node节点privateclassNode{publicEe;publicNodenext;publicNode(Ee,Nodenext){this.e=e;this.next=next;}publicN...
集合中三大数据结构数组内存地址连续可以通过下标的成员访问,下标访问的性能高增删操作有较大的性能消耗(需要动态扩容)链表(双向链表)灵活的空间要求,存储空间不要求连续不支持下标访问,支持顺序遍历搜索针对增删操作找到对应的节点改变链表的头尾指针指向即可,无需移动元数据存储位置树(Java中二叉树特性)某节点的左子树节点仅包含小于该节点的值某节点的右子树节点仅包含大于该节点的...
目录一、跳表的定义二、跳表搜索三、插入元素四、删除元素五、完整代码一、跳表的定义跳跃表是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要O(logn)平均时间),并且对并发算法友好。SkipList(跳表)是一种可以代替平衡树的数据结构,默认是按照Key值升序的。SkipList让已排序的数据分布在多层链表中,以0-1随机数决定一个数据的向上攀升与否,通过“空间来换取时间”的一个算法,在每个节点...