![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 76
随风ii
不知年少轻狂,只知胜者为王
展开
-
哈希表
哈希表哈希表的基本介绍:哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。哈希表一般有两种实现方式:数组 + 链表数组 + 二叉树哈希表的应用实例:google公司的一个上机题: 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,名字,住址…),当输入该员工的id时,要求查找到该员工的原创 2021-05-23 14:21:07 · 178 阅读 · 0 评论 -
常用查找算法
常用的四种查找算法在java中我们常用的查找算法有四种:顺序(线性)查找二分查找/折半查找插值查找斐波那契查找顺序查找法应用实例:有一个数列:{1,8, 10, 89,8, 1000, 1234,89,8} ,判断数列中是否包含此元素。 要求使用顺序查找, 如果找到了,就提示找到,并给出下标值;没找到返回-1。分析思路:遍历数组每一个元素,找到则返回此元素的下标,没找到返回-1。如果数组包含多个元素,则将找到的下标,利用一个数列保存起来。代码实现:package com.z原创 2021-05-22 15:49:33 · 267 阅读 · 0 评论 -
常用排序算法
算法时间复杂度度量一个程序(算法)执行时间的两种方法:事后统计的方法:这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素, 这种方式,要在同一台计算机的相同状态下运行,才能比较那个算法速度更快。事前估算的方法:通过分析某个算法的时间复杂度来判断哪个算法更优。时间频度一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频原创 2021-05-22 15:46:07 · 219 阅读 · 0 评论 -
递归
递归简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。递归的调用机制打印问题:传入一个n,依次从1输出打印,1 2 3 4… n。代码实现:package com.zxs.recursion;/** * @Classname print * @Description TODO * @Date 2021/5/16 13:39 * @Created by zxs *///递归打印输出public class原创 2021-05-22 15:36:19 · 105 阅读 · 1 评论 -
栈
栈:栈是一个先入后出的有序列表栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。栈的应用场景:子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中。处理递归调用:和子程序的调用类似,只是除了储存下一个指令的地址外,也将参数、区域变量等数据存入堆栈中。表达式的转换[中缀表达式转后缀表达式]原创 2021-05-22 15:33:58 · 168 阅读 · 0 评论 -
链表
链表:单向链表:内存结构示意图:链表是以节点的方式来存储,也叫链式存储。每个节点包括data域,next域,next域指向下一个节点。链表的各个节点之间不一定是连续存储。链表也分带头节点的链表和不带头节点的链表,根据实际需求来确定。创建单向链表中增删改查的逻辑思路:无序单向链表:无序是指添加数据时,直接添加到链表的尾部。实现思路:这里以英雄为节点,每个节点存储着英雄的属性。每个节点包含4个属性,分别是id,name、nickName、nexthead头节点,原创 2021-05-22 15:32:33 · 642 阅读 · 0 评论 -
队列
队列队列是一个有序列表,可以是数组或链表实现。遵循先进先出的原则环形队列:数组模拟环形队列思路:通过取模的方式来实现队列为空时front == rear。队列满时(rear + 1)% maxSize == front,rear指针指向的位置实际上是没有存储数据的,所以会浪费一个存储空间。队列中有效数据的个数为(rear + maxSize - front)% maxSize实现代码:package com.zxs.circle;import java.util.Sca原创 2021-05-22 15:29:00 · 71 阅读 · 0 评论 -
数组
线性数据结构数据结构包括线性结构和非线性结构:线性结构:是最常用的数据结构,数据元素之间存在一对一的线性关系。存在两种不同的存储结构,即顺序存储结构和链式存储结构 -顺序存储的线性表称为顺序表。 -存储的元素在内存中是连续的。线性结构常见的有:数组、队列、链表、栈非线性结构:非线性结构包括:二维数组、多维数组、广义表、树结构、图结构。队列队列是一个有序列表,可以是数组或链表实现。遵循先进先出的原则环形队列:数组模拟环形队列思路:通过取模的方式原创 2021-05-22 14:51:30 · 75 阅读 · 0 评论