
数据结构(java版)
异时空
这个作者很懒,什么都没留下…
展开
-
数据结构之排序算法三(Java版)
数据结构之排序算法一(Java版)数据结构之排序算法二(Java版)归并排序归并排序介绍:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。归并排序思想示意图1-基本思想:说明:可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实现)。原创 2020-07-20 20:23:47 · 110 阅读 · 0 评论 -
数据结构之排序算法二(Java版)
数据结构之排序算法一(Java版)接下来接着说排序算法希尔排序简单插入排序存在的问题我们看简单的插入排序可能存在的问题.数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1(最小), 这样的过程是:{2,3,4,5,6,6}{2,3,4,5,5,6}{2,3,4,4,5,6}{2,3,3,4,5,6}{2,2,3,4,5,6}{1,2,3,4,5,6}结论: 当需要插入的数是较小的数时,后移的次数明显增多,对效率有影响.希尔排序法介绍希尔排序是希尔(Donald S原创 2020-07-20 20:15:25 · 105 阅读 · 0 评论 -
数据结构之排序算法一(Java版)
排序算法的介绍排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。排序的分类:内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。常见的排序算法分类(见下图):冒泡排序基本介绍冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象原创 2020-07-20 20:05:46 · 173 阅读 · 0 评论 -
数据结构+算法--八皇后问题(Java版)
递归-八皇后问题(回溯算法)八皇后问题介绍八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。这里我们给出一个可以玩这个游戏的网址,大家可以体验一下:八皇后小游戏下边我们给出这个游戏的思路分析:八皇后问题算法思路分析1)第一个皇后先放第一行第一列2)第二个皇后放在第二行第一列、然后判断是否OK, 如果不OK,原创 2020-07-10 21:01:03 · 295 阅读 · 0 评论 -
数据结构递归-迷宫问题(Java版)
迷宫问题红色区域代表墙,白色区域代表小球可以走的路径要求:从左上角第一个白格起步,一直到右下角的白格在讲到该题之前,我们先了解一下递归递归的概念简单的说: 递归就是方法**自己调用自己,**每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。递归能解决什么样的问题递归用于解决什么样的问题1)各种数学问题如: 8皇后问题 , 汉诺塔, 阶乘问题, 迷宫问题, 球和篮子的问题(google编程大赛)2)各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治原创 2020-07-10 19:30:28 · 936 阅读 · 0 评论 -
数据结构之后缀表达式-逆波兰表达式(Java版)
在这里我们先介绍一下中缀表达式和后缀表达式,如果有同学对前缀表达式感兴趣,可以进行相关知识的学习,我这里就不做讲解中缀表达式中缀表达式就是常见的运算表达式,如(3+4)×5-6中缀表达式的求值是我们人最熟悉的,但是对计算机来说却不好操作(前面我们讲的案例就能看的这个问题),因此,在计算结果时,往往会将中缀表达式转成其它表达式来操作(一般转成后缀表达式.)后缀表达式后缀表达式又称逆波兰表达式,与前缀表达式相似,只是运算符位于操作数之后中举例说明: (3+4)×5-6 对应的后缀表达式就是 3 4原创 2020-07-09 19:34:28 · 336 阅读 · 0 评论 -
栈的学习以及用数组模拟栈(Java版)
栈的一个实际需求请输入一个表达式计算式:[722-5+1-5+3-3] 点击计算【如下图】请问: 计算机底层是如何运算得到结果的? 注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 - 5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我们讨论的是这个问题。-> 栈栈的介绍栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端原创 2020-07-07 21:25:33 · 402 阅读 · 0 评论 -
单向环形链表应用场景-约瑟夫环(Josepfu)问题(Java版)
Josephu(约瑟夫、约瑟夫环) 问题Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。提示:用一个不带头结点的循环链表来处理Josephu 问题:先构成一个有n个结点的单循环链表,然后由k结点起从1开始计数,计到m时,对应结点从链表中删除,然后再从被删除结点的下一个结点又从1开始计数,直到最后一个原创 2020-07-05 19:29:00 · 333 阅读 · 0 评论 -
数据结构之双向链表(java版)
为什么需要双向链表?单链表的结点都只有一个指向下一个结点,单链表的数据元素无法直接访问其前驱元素,所以逆序访问单链表中元素极其耗时;思想有点类似使用空间复杂度换时间复杂度。双向链表:在单链表的结点中增加一个指向其前驱的pre指针;该链表中第一个结点的前趋结点为NULL,最后一个结点的后继结点为NULL 。双向链表具有单链表的所有操作:添加元素、插入元素、删除元素、遍历元素;双向链表应用实例使用带head头的双向链表实现 –水浒英雄排行榜管理单向链表的缺点分析:单向链表,查找的方向只能是原创 2020-07-01 20:23:13 · 256 阅读 · 0 评论 -
数据结构之单链表(java版)
链表(LinkedList)介绍链表是有序的列表,但是它在内存中是存储如下:小结:链表是以节点的方式来存储,是链式存储每个节点包含 data 域, next 域:指向下一个节点.如上图:发现链表的各个节点不一定是连续存储.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表单链表(带头结点) 逻辑结构示意图如下单链表的应用实例1)使用带head头的单向链表实现 –水浒英雄排行榜管理2)完成对英雄人物的增删改查操作, 注: 删除和修改,查找可以考虑学员独立完成,也原创 2020-06-29 21:52:34 · 479 阅读 · 0 评论 -
数据结构之线性结构和非线性结构(java版)
这里写自定义目录标题线性结构1. 稀疏数组生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入线性结构一、概念1、线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。2、线性结构拥有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的(这里的连续指的是物原创 2020-06-28 21:13:14 · 1403 阅读 · 0 评论