摘要: 尚硅谷 Java 数据结构与算法【归档】 学习历程 时间 视频时间:2020-1 学习时间:2020-7-30 - 2020-9-13 背景 数据结构和算法属于很基础的部分,在大学也学习过,但是早就忘光了。Java 用多了,总觉得基础不牢,现在也是在补基础。 另外一部分原因就是为了面试。 目录 第 阅读全文
posted @ 2020-09-13 11:37 流星<。)#)))≦ 阅读(1015) 评论(0) 推荐(1) 编辑
摘要: 第 14 章 程序员常用 10 种算法 14.1 二分查找算法(非递归) 14.1.1 二分查找算法(非递归)介绍 前面我们讲过了二分查找算法, 是使用递归的方式, 下面我们讲解二分查找算法的非递归方式 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等), 将数列排序后再进行查找 二分查找 阅读全文
posted @ 2020-09-13 11:35 流星<。)#)))≦ 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 第 13 章 图 13.1 图基本介绍 13.1.1 为什么要有图 前面我们学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时, 这里我们就用到了图 13.1.2 图的举例说明 图是一种数据结构, 其中结点可以具有零个或多个 阅读全文
posted @ 2020-09-13 11:34 流星<。)#)))≦ 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 第 12 章多路查找树 12.1 二叉树与 B 树 12.1.1 二叉树的问题分析 二叉树的操作效率较高, 但是也存在问题, 请看下面的二叉树 二叉树需要加载到内存的, 如果二叉树的节点少, 没有什么问题, 但是如果二叉树的节点很多(比如 1 亿), 就存在如下问题: 问题 1: 在构建二叉树时, 阅读全文
posted @ 2020-09-13 11:32 流星<。)#)))≦ 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 第 11 章树结构实际应用 11.1 堆排序 11.1.1 堆排序基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法, 堆排序是一种选择排序, 它的最坏, 最好, 平均时间复杂度均为 O(nlogn), 它也是不稳定排序。 堆是具有以下性质的完全二叉树: 每个结点的值都大于或等于其左右孩子结点 阅读全文
posted @ 2020-09-13 11:30 流星<。)#)))≦ 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 第 10 章 树结构的基础部分 10.1 二叉树 10.1.1 为什么需要树这种数据结构 数组存储方式的分析 优点: 通过下标方式访问元素, 速度快。 对于有序数组, 还可使用二分查找提高检索速度。 缺点: 如果要检索具体某个值, 或者插入值(按一定顺序)会整体移动, 效率较低 链式存储方式的分析 阅读全文
posted @ 2020-09-13 11:28 流星<。)#)))≦ 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 第 9 章 哈希表 9.1 哈希表(散列)-Google 上机题 看一个实际需求, google 公司的一个上机题: 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址..),当输入该员工的 id 时,要求查找到该员工的 所有信息. 要求: 不使用数据库,尽量节省内存, 阅读全文
posted @ 2020-09-13 11:27 流星<。)#)))≦ 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 第 8 章 查找算法 8.1 查找算法介绍 在 java 中, 我们常用的查找有四种: 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找 8.2 线性查找算法 public class SeqSearch { public static void main(String[] args) 阅读全文
posted @ 2020-09-13 11:26 流星<。)#)))≦ 阅读(240) 评论(0) 推荐(1) 编辑
摘要: 第 7 章 排序算法 7.1 排序算法的介绍 排序也称排序算法(Sort Algorithm), 排序是将一组数据, 依指定的顺序进行排列的过程。 7.2 排序的分类: 内部排序: 指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。 外部排序法: 数据量过大, 无法全部加载到内存中, 需要 阅读全文
posted @ 2020-09-13 11:25 流星<。)#)))≦ 阅读(344) 评论(0) 推荐(1) 编辑
摘要: 第 6 章 递归 6.1 递归应用场景 看个实际应用场景, 迷宫问题(回溯), 递归(Recursion) 6.2 递归的概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 6.3 递归调用机制 列举两个小案例,回顾一下递归 阅读全文
posted @ 2020-09-13 11:22 流星<。)#)))≦ 阅读(228) 评论(0) 推荐(1) 编辑
摘要: 第 5 章 栈 5.1 栈的一个实际需求 请输入一个表达式 计算式:[722-5+1-5+3-3] 点击计算 请问: 计算机底层是如何运算得到结果的? 注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 - 5, 但是计算机怎么理解这个算式的(对计算机而言, 它接收到的就是一个字符 阅读全文
posted @ 2020-09-13 11:08 流星<。)#)))≦ 阅读(400) 评论(0) 推荐(1) 编辑
摘要: 第 4 章 链表 4.1 链表(Linked List)介绍 链表是有序的列表, 但是它在内存中是存储如下 链表是以节点的方式来存储,是链式存储 每个节点包含 data 域, next 域: 指向下一个节点. 如图: 发现链表的各个节点不一定是连续存储 链表分带头节点的链表和没有头节点的链表, 根据 阅读全文
posted @ 2020-09-13 11:07 流星<。)#)))≦ 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 第 3 章 稀疏数组和队列 3.1 稀疏数组( sparse array ) 3.1.1 先看一个实际的需求 编写的五子棋程序中, 有存盘退出和续上盘的功能。 分析问题: 因为该二维数组的很多值是默认值 0, 因此记录了很多没有意义的数据->稀疏数组。 3.1.2 基本介绍 当一个数组中大部分元素为 阅读全文
posted @ 2020-09-13 11:06 流星<。)#)))≦ 阅读(313) 评论(0) 推荐(2) 编辑
摘要: 第 2 章 数据结构和算法概述 2.1 数据结构和算法的关系 数据(data)结构(structure)是一门研究组织数据方式的学科, 有了编程语言也就有了数据结构。学好数据结构可以编写出更加漂亮,更加有效率的代码。 要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决 程序 = 数 阅读全文
posted @ 2020-09-13 11:04 流星<。)#)))≦ 阅读(262) 评论(0) 推荐(1) 编辑
摘要: 第 1 章 内容介绍和授课方式 1.1 数据结构和算法内容介绍 1.1.1 先看几个经典的算法面试题 字符串匹配问题 暴力匹配 [简单, 但是效率低] KMP 算法《部分匹配表》 汉诺塔游戏 八皇后问题 马踏棋盘 马踏棋盘算法也被称为骑士周游问题 会使用到图的深度优化遍历算法(DFS) + 贪心算法 阅读全文
posted @ 2020-09-13 11:03 流星<。)#)))≦ 阅读(260) 评论(0) 推荐(0) 编辑