![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
勉之~
遇事不怕,就怕没有解决的能力,不断提升自己,做一个勇往直前的人,Fighting!!!
展开
-
数据结构与算法之归并排序
数据结构与算法之归并排序基本介绍归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。排序示意图再来看看治阶段,我们需要将两个已经有序的子序列合并成一个有序序列,比如上图中的最后一次合并,要将[4,5,7,8]和[1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,原创 2021-05-15 09:52:39 · 103 阅读 · 0 评论 -
数据结构与算法之快速排序
数据结构与算法之快速排序基本介绍快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列排序示意图代码实现package com.datastrucate.sort;import java.util.Arrays;/** * ClassName:QuickSort * Pac原创 2021-05-14 15:34:13 · 64 阅读 · 0 评论 -
数据结构与算法之希尔排序及优化
数据结构与算法之希尔排序及优化基本介绍希尔排序也是一种插入排序,它是简单插入,排序经过改进之后的一个更高效的版本,也称为缩小增量排序。基本思想希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止排序示意图代码实现两种方法:插入交换法实现,低效率插入移动法实现,优化package com.datastrucate.sort;import java.util.Array原创 2021-05-14 14:47:36 · 101 阅读 · 0 评论 -
数据结构与算法之插入排序
数据结构与算法之插入排序基本介绍插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。排序思想插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。总结起来就是从第二个数开始,每次右边和左边比较,右边比左原创 2021-05-13 23:17:50 · 78 阅读 · 0 评论 -
数据结构与算法之递归解决迷宫及八皇后问题
数据结构与算法之递归解决迷宫及八皇后问题一 迷宫问题迷宫问题描述从左上角走到右下角,红色代表墙,白色代表可以走思路(1)使用二维数组构建地图map,i,j代表位置,(1,1)代表出发的地址,(6,5)代表目的地(2)约定:数字1代表墙,2代表走通的路,3代表走过回溯走不通(3)走路策略:下-> 右->上 -> 左或其他的策略代码实现package com.datastrucate.recursion;/** * ClassName:MiGong * Pack原创 2021-05-13 16:52:42 · 128 阅读 · 0 评论 -
数据结构与算法之完整逆波兰计算器
数据结构与算法之完整逆波兰计算器源码如下:package com.datastrucate.stack;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Stack;import java.util.regex.Pattern;/** * ClassName:ReversePolishMultiCalc * Package:com.data原创 2021-05-12 17:03:44 · 91 阅读 · 0 评论 -
数据结构与算法之栈的实现及逆波兰计算器简易版
数据结构之栈的实现栈的介绍(1) 栈的英文为(stack)(2) 栈是一个先入后出(FILO-First In Last Out)的有序列表。(3) 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。(4) 根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除(5) 图解方式说明原创 2021-05-12 16:23:45 · 255 阅读 · 0 评论 -
数据结构与算法之环形链表实现约瑟夫问题
数据结构与算法之环形链表实现约瑟夫问题约瑟夫问题Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。提示:用一个不带头结点的循环链表来处理 Josephu 问题:先构成一个有 n 个结点的单循环链表,然后由 k 结点起从 1 开始计数,计到 m 时,对应结点从链表中删除,然后再原创 2021-05-11 15:27:04 · 84 阅读 · 0 评论 -
数据结构与算法之双向链表
数据结构与算法之双向链表有关单向链表请参考我的另一篇博文https://blog.csdn.net/hcyxsh/article/details/1141012001、双向链表的操作分析和实现使用带 head 头的双向链表实现 –水浒英雄排行榜管理单向链表的缺点分析:单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。单向链表不能自我删除,需要靠辅助节点 ,而双向链表,则可以自我删除,所以前面我们单链表删除时节点,总是找到 temp,temp 是待删除节点的前一个节原创 2021-02-26 17:40:53 · 76 阅读 · 1 评论 -
数据结构与算法之冒泡排序及优化
数据结构与算法之冒泡排序及优化一 基本介绍(1)冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。(2)优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好后,在进行)二原创 2021-03-03 16:36:56 · 100 阅读 · 5 评论 -
数据结构与算法之选择排序
数据结构与算法之选择排序一 基本介绍选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。二 选择排序分析选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 arr[0]~arr[n-1]中选取最小值,与 arr[0]交换,第二次从 arr[1]~arr[n-1]中选取最小值,与 arr[1]交换,第三次从 arr[2]~arr[n-1]中选取最小值,与 arr[2] 交换,…,第 i 次从 arr[i-1原创 2021-03-03 17:57:18 · 74 阅读 · 2 评论 -
数据结构与算法之单链表
数据结构与算法之单链表1、链表介绍链表是有序的列表,但是它在内存中是存储如下小结上图:链表是以节点的方式来存储,是链式存储每个节点包含 data 域, next 域:指向下一个节点.如图:发现链表的各个节点不一定是连续存储.链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表(带头结点)逻辑结构示意图如下2、单链表的应用实例使用带 head 头的单向链表实现 –水浒英雄排行榜管理完成对英雄人物的增删改查操作, 注: 删除和修改,查找(1) 第一种原创 2021-02-25 19:19:38 · 511 阅读 · 0 评论 -
数据结构与算法之稀疏数组与二维数组转换
数据结构与算法之稀疏数组1、稀疏数组说明稀疏数组:m行三列的数组。第一行数据分别为原始数组的 行数、列数、非零个数。后面的数据为原始数据的非零数的行下标、列下标和值,根据原始数组依次类推得到稀疏数组的行数。图片说明2、思路 二维数组 转 稀疏数组 1. 遍历 原始的二维数组,得到有效数据的个数 sum 2. 根据sum 就可以创建 稀疏数组 sparseArr int[sum + 1] [3] 3. 将二维数组的有效数据数据存入到 稀疏数组稀原创 2021-02-24 15:35:21 · 102 阅读 · 0 评论