
Java数据结构和算法
文章平均质量分 97
訾博ZiBo
慢慢学,不要停。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【算法】001-二分查找
一、生活案例 1、找出学号为52的学生的试卷 一个班级100名学生的100张试卷按照1号到100号从上往下的顺序放在桌子上,你现在需要找出学号为52的学生的试卷,是从第一张开始一张一张得找吗?显然不是,而是从最中间开始找,因为这距离52号试卷更近! 我们将从第一张试卷开始往下找这种方式称之为简单查找,将从中间开始找这种方式称之为二分查找(二分法); 2、找出学号为25的学生的试卷 如上面的条件,这次我们查找第25号学生的试卷,我们使用二分法进行查找,我们先将所有时间分成两份,再讲第一份试卷分.原创 2020-09-18 18:15:22 · 652 阅读 · 0 评论 -
【Java数据结构和算法】013-查找:常见查找算法、顺序(线性)查找、二分查找、插值查找*、斐波那契查找*
一、查找算法概述 1、常见的4种查找算法 ①顺序(线性)查找; ②二分查找/折半查找; ③插值查找; ④斐波那契查找(黄金分割点查找); 二、顺序(线性)查找 1、说明 对顺序无要求; 2、代码实现 package com.zb.ds.search; //顺序查找 public class SeqSearch { public static void main(String[] args) { int[] arr = {1,5,2,67,42,84..原创 2020-12-04 10:48:43 · 182 阅读 · 0 评论 -
【Java数据结构和算法】012-排序:快速排序*、归并排序*、基数排序(桶排序)、堆排序、排序算法比较
一、快速排序 1、介绍 快速排序(Quicksort)是对冒泡排序的一种改进; 2、基本思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列; 3、思路图解 4、代码演示 代码实现[不易理解,看注释解释]: package com.zb.ds.sort; import java.util.Arrays; //快速排...原创 2020-11-28 10:19:25 · 394 阅读 · 0 评论 -
【Java数据结构和算法】011-排序:冒泡排序、选择排序、插入排序、希尔排序*
一、冒泡排序 1、基本介绍 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒; 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下 来没有进行过交换,就说明序列有序,因此要在排序过程中设置 一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好后,再进行) 2、思路图解 3、代..原创 2020-11-23 10:54:34 · 209 阅读 · 0 评论 -
【Java数据结构和算法】011-排序:排序算法、时间复杂度、空间复杂度
一、排序算法概述 1、简介 排序也称排序算法 (Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程; 2、分类 内部排序: 指将需要处理的所有数据都加载到内部存储器(内存)中进行排序; 外部排序: 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序; 3、常见的排序算法 二、算法的时间复杂度 1、度量一个程序(算法)执行时间的两种方法 事后统计的方法: 这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测...原创 2020-11-21 09:38:44 · 184 阅读 · 0 评论 -
【Java数据结构和算法】010-递归:迷宫问题、八皇后问题(回溯算法)
一、递归应用场景和调用机制 1、简介 简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 2、两个案例 打印问题: package com.zb.ds; //递归 public class Recursion { public static void main(String[] args) { test(4); } public static void test(int n) { .原创 2020-11-20 08:44:02 · 320 阅读 · 0 评论 -
【Java数据结构和算法】009-栈:前缀、中缀、后缀表达式(逆波兰表达式)
一、前缀表达式 1、概述 ①前缀表达式(波兰表达式):前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前; ②举例说明: (3+4)×5-6 对应的前缀表达式就是 - × + 3 4 5 6; (PS:符号逆序走前面,数字顺序走后面;) (PS:这么看来前缀表达式就是符号放前面,类似“1+1”就是中缀表达式,那后缀表达式就是将符号放后面(实际上不完全相似,具体见后缀表达式)) 2、前缀表达式的计算求值逻辑 从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数.原创 2020-11-15 10:31:38 · 260 阅读 · 0 评论 -
【Java数据结构和算法】008-栈
0、警醒自己 1、学习不用心,骗人又骗己; 2、学习不刻苦,纸上画老虎; 3、学习不惜时,终得人耻笑; 4、学习不复习,不如不学习; 5、学习不休息,毁眼伤身体; 7、狗才等着别人喂,狼都是自己寻找食物; 一、栈的应用场景和介绍 1、栈的应用场景 一个实际的场景: 请输入一个表达式 计算式:[7*2*2-5+1-5+3-3] 点击计算【如下图】: 请问:计算机底层是如何运算得到结果的? 注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 - 5, 但是计.原创 2020-11-15 08:42:52 · 218 阅读 · 0 评论 -
【Java数据结构和算法】007-链表:循环链表和约瑟夫问题
一、循环列表和约瑟夫问题 1、单向环形列表应用场景 Josephu(约瑟夫、约瑟夫环) 问题: Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列; 提示:用一个不带头结点(可以带也可以不带)的循环链表来处理Josephu问题:先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,对..原创 2020-11-11 10:23:40 · 256 阅读 · 0 评论 -
【Java数据结构和算法】006-链表:双向链表
目录 一、双向链表概述 1、双向链表简介 2、双向链表图解 3、单向链表和双向链表的优缺点及适用场景 单向链表: 双向链表: 二、双链表应用实例 1、双链表属性的内容 举例: 2、添加节点思路分析 图解: 思路分析: 遍历思路分析: 代码演示: 运行结果: 3、删除节点思路分析 图解: 思路分析: 代码实现: 运行结果: 4、插入节点 图解: 思路分析: 代码演示: 运行结果: 一、双向链表概述 1、双向链表简介 在单向链表中,我们能够通过next连接原创 2020-11-02 14:26:18 · 263 阅读 · 0 评论 -
【Java数据结构和算法】004-链表:单向链表
一、原创 2020-11-02 09:56:11 · 371 阅读 · 0 评论 -
【Java数据结构和算法】003-稀疏数组和队列
一、稀疏sparsearray数组 1、一个实际的应用场景 编写的五子棋程序中,有存盘退出和续上盘的功能: 问题分析: 因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据,我们这个时候可以使用稀疏数组实现对二维数组的压缩; 2、稀疏数组基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组; 稀疏数组的处理方法: ①记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值; ②记录在一个小规模的数组(稀疏数组)中,从.原创 2020-10-31 09:32:03 · 270 阅读 · 2 评论 -
【Java数据结构和算法】002-数据结构和算法概述
目录 一、数据结构和算法的关系 二、实际编程中遇到的问题 1、一段Java代码 代码: 问题: 2、一个五子棋程序 图示: 问题: 功能实现步骤分析: 3、约瑟夫(Josephu)问题(丢手帕问题) 问题描述: 思路提示: 4、其他常见的算法问题 图示: 思路: 三、线性结构和非线性结构 1、数据结构的分类 2、线性结构 3、非线性结构 一、数据结构和算法的关系 1、数据data结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构。学原创 2020-10-29 17:22:04 · 249 阅读 · 0 评论 -
【Java数据结构和算法】001-前言与数据结构和算法介绍
一、前言 1、一吐为快 我终于来灭你了,数据结构和算法!对于大厂的面试,我一直都感到底气不足,这底气就是数据结构和算法!我本身文科生,专科学的是电子商务,专升本之后本科学了信息管理与信息系统,虽然大学期间有数据结构这门课,但我从来没听过,因为老师教的我从来不学!这也许是我的一个问题,本来我对某一领域挺感兴趣的,但是只要它成为了一门课,老师讲台讲,学生下面学,还有作业和考试,那么我就瞬间对这个领域失去的兴趣,简单地说就是老师教的我从来不学!当然,数据结构本身就晦涩难懂、毫无乐趣可言!我常常听说哪些大厂的笔原创 2020-10-29 16:33:53 · 223 阅读 · 0 评论