
Java数据结构和算法
文章平均质量分 97
訾博ZiBo
慢慢学,不要停。
展开
-
【算法】001-二分查找
一、生活案例1、找出学号为52的学生的试卷一个班级100名学生的100张试卷按照1号到100号从上往下的顺序放在桌子上,你现在需要找出学号为52的学生的试卷,是从第一张开始一张一张得找吗?显然不是,而是从最中间开始找,因为这距离52号试卷更近!我们将从第一张试卷开始往下找这种方式称之为简单查找,将从中间开始找这种方式称之为二分查找(二分法);2、找出学号为25的学生的试卷如上面的条件,这次我们查找第25号学生的试卷,我们使用二分法进行查找,我们先将所有时间分成两份,再讲第一份试卷分.原创 2020-09-18 18:15:22 · 635 阅读 · 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 · 175 阅读 · 0 评论 -
【Java数据结构和算法】012-排序:快速排序*、归并排序*、基数排序(桶排序)、堆排序、排序算法比较
一、快速排序1、介绍快速排序(Quicksort)是对冒泡排序的一种改进;2、基本思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列;3、思路图解4、代码演示代码实现[不易理解,看注释解释]:package com.zb.ds.sort;import java.util.Arrays;//快速排...原创 2020-11-28 10:19:25 · 377 阅读 · 0 评论 -
【Java数据结构和算法】011-排序:冒泡排序、选择排序、插入排序、希尔排序*
一、冒泡排序1、基本介绍冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒;因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下 来没有进行过交换,就说明序列有序,因此要在排序过程中设置 一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好后,再进行)2、思路图解3、代..原创 2020-11-23 10:54:34 · 200 阅读 · 0 评论 -
【Java数据结构和算法】011-排序:排序算法、时间复杂度、空间复杂度
一、排序算法概述1、简介排序也称排序算法 (Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程;2、分类内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序;外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序;3、常见的排序算法二、算法的时间复杂度1、度量一个程序(算法)执行时间的两种方法事后统计的方法:这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测...原创 2020-11-21 09:38:44 · 170 阅读 · 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 · 300 阅读 · 0 评论 -
【Java数据结构和算法】009-栈:前缀、中缀、后缀表达式(逆波兰表达式)
一、前缀表达式1、概述①前缀表达式(波兰表达式):前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前;②举例说明: (3+4)×5-6 对应的前缀表达式就是 - × + 3 4 5 6;(PS:符号逆序走前面,数字顺序走后面;)(PS:这么看来前缀表达式就是符号放前面,类似“1+1”就是中缀表达式,那后缀表达式就是将符号放后面(实际上不完全相似,具体见后缀表达式))2、前缀表达式的计算求值逻辑从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数.原创 2020-11-15 10:31:38 · 239 阅读 · 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 · 180 阅读 · 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 · 228 阅读 · 0 评论 -
【Java数据结构和算法】006-链表:双向链表
目录一、双向链表概述1、双向链表简介2、双向链表图解3、单向链表和双向链表的优缺点及适用场景单向链表:双向链表:二、双链表应用实例1、双链表属性的内容举例:2、添加节点思路分析图解:思路分析:遍历思路分析:代码演示:运行结果:3、删除节点思路分析图解:思路分析:代码实现:运行结果:4、插入节点图解:思路分析:代码演示:运行结果:一、双向链表概述1、双向链表简介在单向链表中,我们能够通过next连接原创 2020-11-02 14:26:18 · 243 阅读 · 0 评论 -
【Java数据结构和算法】004-链表:单向链表
一、原创 2020-11-02 09:56:11 · 349 阅读 · 0 评论 -
【Java数据结构和算法】003-稀疏数组和队列
一、稀疏sparsearray数组1、一个实际的应用场景编写的五子棋程序中,有存盘退出和续上盘的功能:问题分析:因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据,我们这个时候可以使用稀疏数组实现对二维数组的压缩;2、稀疏数组基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组;稀疏数组的处理方法:①记录数组一共有几行几列,有多少个不同的值 把具有不同值的元素的行列及值;②记录在一个小规模的数组(稀疏数组)中,从.原创 2020-10-31 09:32:03 · 249 阅读 · 2 评论 -
【Java数据结构和算法】002-数据结构和算法概述
目录一、数据结构和算法的关系二、实际编程中遇到的问题1、一段Java代码代码:问题:2、一个五子棋程序图示:问题:功能实现步骤分析:3、约瑟夫(Josephu)问题(丢手帕问题)问题描述:思路提示:4、其他常见的算法问题图示:思路:三、线性结构和非线性结构1、数据结构的分类2、线性结构3、非线性结构一、数据结构和算法的关系1、数据data结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构。学原创 2020-10-29 17:22:04 · 209 阅读 · 0 评论 -
【Java数据结构和算法】001-前言与数据结构和算法介绍
一、前言1、一吐为快我终于来灭你了,数据结构和算法!对于大厂的面试,我一直都感到底气不足,这底气就是数据结构和算法!我本身文科生,专科学的是电子商务,专升本之后本科学了信息管理与信息系统,虽然大学期间有数据结构这门课,但我从来没听过,因为老师教的我从来不学!这也许是我的一个问题,本来我对某一领域挺感兴趣的,但是只要它成为了一门课,老师讲台讲,学生下面学,还有作业和考试,那么我就瞬间对这个领域失去的兴趣,简单地说就是老师教的我从来不学!当然,数据结构本身就晦涩难懂、毫无乐趣可言!我常常听说哪些大厂的笔原创 2020-10-29 16:33:53 · 213 阅读 · 0 评论