算法与数据结构
文章平均质量分 73
王惠龙
这个作者很懒,什么都没留下…
展开
-
⑨算法与数据结构-java-哈希表
⑨哈希表 看一个实际需求,google公司的一个上机题: 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查找到该员工的 所有信息. 要求: 不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列) 哈希表的基本介绍 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的原创 2021-09-07 18:01:33 · 52 阅读 · 0 评论 -
⑧算法与数据结构-java-查找算法
⑦查找算法 查找算法介绍 在java中,我们常用的查找有四种: 1) 顺序(线性)查找 2) 二分查找/折半查找 3) 插值查找 4) 斐波那契查找 线性查找算 有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值。 代码: public class SeqSearch { public static void main(String[] args) { int[] arr = { 10, 99原创 2021-09-07 15:23:32 · 78 阅读 · 0 评论 -
⑦算法与数据结构-java-排序算法
⑦排序算法 排序算法的介绍 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 排序的分类: 内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序。 外部排序法: 数据量过大,无法全部加载到内存中,需要借助外部存储进行 排序。 常见的排序算法分类(见下图): 算法的时间复杂度 度量一个程序(算法)执行时间的两种方法 事后统计的方法 1)这种方法可行,但是有两个问题: 一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二原创 2021-09-04 15:51:05 · 87 阅读 · 0 评论 -
⑥算法与数据结构-java-递归
⑥递归 递归应用场景 看个实际应用场景,迷宫问题(回溯), 递归(Recursion) 递归的概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 递归调用机制 我列举两个小案例,来帮助大家理解递归,部分学员已经学习过递归了,这里在给大家回顾一下递归调用机制 1)打印问题 2)阶乘问题 //输出什么? public static void test(int n) { if (n > 2) { test(n - 1);原创 2021-09-02 20:12:37 · 99 阅读 · 0 评论 -
⑤算法与数据结构-java-栈
⑤栈 实际需求 请输入一个表达式 计算式:[722-5+1-5+3-3] 点击计算【如下图】 请问: 计算机底层是如何运算得到结果的? 注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 - 5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我们讨论的是这个问题。-> 栈 栈的介绍 1)栈的英文为(stack) 2)栈是一个先入后出(FILO-First In Last Out)的有序列表。 3)栈(stack)是限制线性表中元素的插入和删除只原创 2021-09-02 19:27:29 · 110 阅读 · 0 评论 -
④算法与数据结构-java-链表
④链表 单向链表 链表是有序的列表,但是它在内存中是存储如下 小结: 1)链表是以节点的方式来存储,是链式存储 2)每个节点包含 data 域, next 域:指向下一个节点. 3)如图:发现链表的各个节点不一定是连续存储. 4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定 使用带head头的单向链表实现 –水浒英雄排行榜管理 1)完成对英雄人物的增删改查操作, 注: 删除和修改,查找可以考虑学员独立完成,也可带学员完成 2)第一种方法在添加英雄时,直接添加到链表的尾部 3)第二种方原创 2021-09-02 18:56:54 · 67 阅读 · 0 评论 -
③算法与数据结构-java-队列
③队列 实际需求 队列的一个使用场景 银行排队的案例: 队列的介绍 1.队列是一个有序列表,可以用数组或是链表来实现。 2.遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出 3.示意图:(使用数组模拟队列示意图) 数组模拟队列 1 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。 2因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front及 rear分别记录队列前后端的下标,front 会随着原创 2021-08-21 00:02:15 · 88 阅读 · 0 评论 -
②算法与数据结构-java-稀疏数组
②稀疏sparsearray数组-java 实际需求 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 1、记录数组一共有几行几列,有多少个不同的值 2.、把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 互相转换思路 代码 public class SparseArray { // 先创建一个原始的二维数组11*11 // 0表时没有棋子,1表时黑子 2表时蓝子 public static void原创 2021-08-20 20:17:14 · 64 阅读 · 0 评论 -
①算法与数据结构-java版本-介绍
算法与数据结构介绍 数据结构和算法的重要性 1、算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算 2、一般来讲 程序会使用了内存计算框架(比如Spark)和缓存技术(比如Redis等)来优化程序,再深入的思考一下,这些计算框架和缓存技术, 它的核心功能是哪个部分呢? 3、 拿实际工作经历来说, 在Unix下开发服务器程序,功能是要支持上千万人同时在线, 在上线前,做内测,一切OK,可上线后,服务器就支撑不住了, 公司的CTO对代码进行优化,再次上线,坚如磐石。你就能感受到程序是有灵魂的,原创 2021-08-20 19:53:09 · 111 阅读 · 0 评论