数据结构与算法
文章平均质量分 76
主要是以数据结构为主
。ming。
一个努力从菜鸟变为老鸟的小白
展开
-
快速幂及其实战
快速幂原创 2022-04-12 18:46:33 · 267 阅读 · 0 评论 -
KMP算法
在讲述KMP算法前,首先要理解什么是部分匹配表。 1,部分匹配表 在这里插入图片描述 2,KMP算法 题目 思路分析 为什么可以进行上面的这种写法呢?是因为我们已经知道了最大前缀和后缀了, 那么我们下一回找的时候完全可以直接将str移动到最大后缀的地方,省下了不少的空间。 算法实现 package kmp.zuochenyun; /** * @version v1.0 * @ProjectName: 数据结构 * @ClassName: Code01_KMP * @Description:原创 2022-04-04 19:54:40 · 264 阅读 · 0 评论 -
稀疏数组和队列
一,稀疏数组和队列 稀疏数组 应用场景 编写五子棋程序过程中,有存盘退出和续上盘的功能。 这就会产生一个问题,就是二维数组中有很多的0,记录了太多无意义的数据。所以就诞生了稀疏数组。 基本介绍 使用场景: 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 存取方式: 第一行记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 例如: 应用实例 使用稀疏数组,来保留类似前面的二维数组(棋盘、地原创 2021-11-22 23:14:20 · 248 阅读 · 0 评论 -
查找算法总结
1,查找算法介绍 在java中,我们常用的查找有四种: 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找 2,线性查找算法 有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值。 package com.zhao; /** * @version v1.0 * @ProjectName: 数据结构 * @ClassName: SeqSearch * @Description: 线性查找原创 2021-12-20 11:21:27 · 287 阅读 · 0 评论 -
哈希表的实现
1,哈希表(散列)-Google上机题 看一个实际需求,google公司的一个上机题: 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查找到该员工的 所有信息. 要求: 不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列) 2,哈希表的基本介绍 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个原创 2021-12-21 10:41:05 · 122 阅读 · 0 评论 -
递归(迷宫问题和八皇后问题)
四,递归 1,递归的应用场景 看个实际应用场景,迷宫问题(回溯), 递归(Recursion) 2,递归的概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 也可以理解为嵌套,就是自己疯狂嵌套自己,但是必须要有一个边界条件,即停止自己嵌套的边界。 3,递归调用机制 我列举两个小案例,来帮助大家理解递归,部分学员已经学习过递归了,这里在给大家回顾一下递归调用机制 打印问题 阶乘问题 使用图解的方式来了解递归 递归的调用规则:原创 2021-12-08 15:21:32 · 305 阅读 · 0 评论 -
排序算法看这一篇就够了
1,排序算法的介绍 排序的分类: 内部排序: 指将需要处理的所有数据都加载到**内部存储器(内存)**中进行排序。 外部排序法: 数据量过大,无法全部加载到内存中,需要借助**外部存储(文件等)**进行排序。 常见的排序算法分类(见下图): 2,算法的时间复杂度 2.1,度量一个程序(算法)执行时间的两种方法 事后统计的方法 这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素, 这种方式,要原创 2021-12-12 20:01:17 · 447 阅读 · 0 评论 -
栈的学习笔记
三,栈 1,问题引入 请输入一个表达式 计算式:722-5+1-5+3-3 点击计算【如下图】 问: 计算机底层是如何运算得到结果的? 注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 - 5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我们讨论的是这个问题。-> 栈 2,栈的介绍 栈的英文为(stack) 栈是一个先入后出(FILO-First In Last Out)的有序列表。 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一原创 2021-12-07 12:10:20 · 384 阅读 · 0 评论 -
链表详细总结 Java版
二,链表 1,链表的介绍 链表是有序的列表,但是他在内存中是存储如下: 小结: 链表是以节点的方式来存储的,是链式存储 每个节点包含data域和next域:指向下一个节点 链表的各个节点不一定是连续存储 链表分带头节点的链表和没有头结点的链表,根据实际情况确定 2,单链表的应用实例 使用带head头的单向链表实现 –水浒英雄排行榜管理 完成对英雄人物的增删改查操作,无需按照顺序进行 思路 添加: 先创建一个头结点,表示链表的头部 每添加一个节点,就找到最后一个节点进行添加 遍历原创 2021-11-25 12:00:22 · 116 阅读 · 0 评论 -
链表的详解加部分面试题
二,链表 1,链表的介绍 链表是有序的列表,但是他在内存中是存储如下: 小结: 链表是以节点的方式来存储的,是链式存储 每个节点包含data域和next域:指向下一个节点 链表的各个节点不一定是连续存储 链表分带头节点的链表和没有头结点的链表,根据实际情况确定 2,单链表的应用实例 使用带head头的单向链表实现 –水浒英雄排行榜管理 完成对英雄人物的增删改查操作,无需按照顺序进行 思路 添加: 先创建一个头结点,表示链表的头部 每添加一个节点,就找到最后一个节点进行添加 遍历原创 2021-11-23 12:10:35 · 71 阅读 · 0 评论