算法与数据结构
文章平均质量分 78
长泽雅美你老婆
有用就点个赞就好
展开
-
算法与数据结构-常用算法
文章目录一、二分查找算法(非递归)二、分治算法1. 介绍2. 基本步骤3. 设计模式4. 汉诺塔问题三、动态规划1. 介绍2. 背包问题3. 思路4. 背包问题解决5. 代码一、二分查找算法(非递归)前面我们讲过了二分查找算法,是使用递归的方式,下面我们讲解二分查找算法的非递归方式二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找二分查找法的运行时间为对数时间O(log2n)O(log_2n)O(log2n),即查找到需要的目标位置最多只需要log2nlog_2原创 2022-05-20 01:22:19 · 252 阅读 · 0 评论 -
[java]-算法与数据结构-第十一章-图
文章目录1. 基本介绍1)为什么要有图2)举例说明3)常用概念4)表示方式2. 入门案例1)要求2)代码实现3. 深度优先遍历1)图遍历介绍2)深度优先遍历基本思想3)深度优先遍历算法步骤4)代码4. 广度优先遍历1)介绍2)算法步骤3)代码5. 对比1. 基本介绍1)为什么要有图前面我们学了线性表和树线性表局限于一个直接前驱和一个直接后继的关系树也只能有一个直接前驱也就是父节点当我们需要表示多对多的关系时,这里我们就用到了图2)举例说明图是一种数据结构,其中结点可以具有零个或多个相邻元原创 2022-05-19 17:05:56 · 145 阅读 · 0 评论 -
[java]-算法与数据结构-第十章-树结构
文章目录十、树结构1. 基础部分1)引出2)常用术语树2. 二叉树1)概念2)遍历3)查找4)删除3. 顺序存储二叉树1)概念2)遍历4. 线索化二叉树1)概念2)图解3)实现4)遍历5. 堆排序1)概念2)思想3)图解4)代码6. 赫夫曼树1)概念2)重要概念3)图解4)代码7. 赫夫曼编码1)概念2)图解3)代码十、树结构1. 基础部分1)引出数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺原创 2022-05-02 19:48:46 · 1028 阅读 · 0 评论 -
[java]-算法与数据结构-第九章-哈希表
文章目录九、哈希表1. 介绍2. 管理雇员图3. 代码实现九、哈希表1. 介绍散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。2. 管理雇员图3. 代码实现public class Test { public static void main(String[] args) { Hash原创 2022-04-28 20:35:39 · 1180 阅读 · 0 评论 -
[java]-算法与数据结构-第八章-查找算法
文章目录八、查找算法1. 顺序(线性)查找算法2. 二分查找1)思路分析2)代码实现3. 插值查找算法1)原理介绍2)代码4. 斐波那契(黄金分割法)1)介绍2)原理3)代码八、查找算法1. 顺序(线性)查找算法 public static int seqSearch(int[] arr, int value) { // 线性查找是逐一比对,发现有相同值,就返回下表 for (int i = 0; i < arr.length; i++) {原创 2022-04-28 19:35:21 · 1147 阅读 · 0 评论 -
[java]-算法与数据结构-第七章-排序算法
文章目录七、排序算法1. 排序算法介绍2. 算法的时间复杂度1)计算复杂度2)时间频度基本案例忽略常数项忽略低频次数忽略系数3)时间复杂度计算常见的时间复杂度常数阶O(1)对数阶 O(log2nlog_2nlog2n)线性阶O(n)线性对数阶 O(nlogN)平方阶O(n2n^2n2)4)平均时间复杂度和最坏时间复杂度3. 冒泡排序1)介绍2)图解3)举例图解4)代码实现4. 选择排序1)介绍2)思想3)图解4)举例图解5)代码实现七、排序算法1. 排序算法介绍排序也称排序算法(Sort Algor原创 2022-04-17 09:40:29 · 597 阅读 · 0 评论 -
[java]-算法与数据结构-第六章-递归
文章目录六、递归1. 概念2. 递归调用机制1)打印问题2)阶乘问题3. 递归需要遵守的重要规则4. 迷宫问题1)代码5. 八皇后问题(回溯算法)1)思路分析2)代码六、递归1. 概念递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁、递归–百度百科2. 递归调用机制1)打印问题 public static void test1(int n){ if(n > 0){ test1(--n)原创 2022-04-17 09:38:33 · 75 阅读 · 0 评论 -
[java]-算法与数据结构-第五章-栈
五、栈 Stack1.栈的实际需求2. 栈的介绍栈的英文为(stack)栈是一个先入后出(FILOfirst In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一^种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另—端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除出栈(pop)入栈(pu原创 2022-04-17 09:37:35 · 69 阅读 · 0 评论 -
[java]-算法与数据结构-第三章-队列
文章目录三、队列1. 介绍2. 图示3. 数组实现队列4. 数组模拟环形队列4. 数组模拟环形队列三、队列1. 介绍队列是一个有序列表,可以通过数组或者链表实现遵循先入先出的原则。如下图:存入数据时,front不变,rear变化;取数据时,rear位置不变,front的位置变化2. 图示图片站内找的rear:队列的尾部front:数据的头部3. 数组实现队列代码package 二__队列;/*队列场景:排队介绍:先进先出*/import java.u原创 2022-04-17 09:35:03 · 55 阅读 · 0 评论 -
[java]-算法与数据结构-第二章-稀疏数组
文章目录二、稀疏数组1. 介绍2. 使用3. 图示4. 代码实现二、稀疏数组1. 介绍稀疏数组就是压缩多余的冗余数据。当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。2. 使用记录数组有几行几列,有多少不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模3. 图示4. 代码实现代码/** * 五子棋保存棋子 * 二维数组 --> 稀疏数组 * [0, 0, 0, 0, 0, 0, 0, 0, 0, 0原创 2022-04-17 09:32:38 · 163 阅读 · 0 评论 -
[java]-算法与数据结构
尚硅谷java算法与数据结构笔记一天更新两块加油鸭!!!原创 2022-04-07 11:54:35 · 853 阅读 · 0 评论