数据结构与算法
记录学习数据结构与算法的心路历程。
放开这颗白菜让我来
微信公众号“放开这颗白菜让我来”
哥拱的不仅仅是白菜,是寂寞
展开
-
【算法】动态规划,解决背包问题(knapsack)(小偷是不是也得学一学动态规划啦哈哈)
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。文章目录一、写在前言二、动态规划(一)概念介绍(二)01背包问题1、场景再现2、思路讲解(1)偷东西(2)偷了什么东西3、代码实现三、结束语一、写在前言常见算法思想第二谈—动态规划。二、动态规划(一)概念介绍动态规划(Dynamic Programmming)是将大问题拆解成小问题,然后一步步获得最优解的办法。看到这里我们不免产生疑惑,这不是与前面讲的分治算法一样嘛原创 2020-09-03 21:36:41 · 870 阅读 · 0 评论 -
【算法】分治算法,解决汉诺塔问题
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。文章目录一、写在前言二、分治算法(一)内容介绍(二)汉诺塔问题1、思路讲解2、代码实现三、结束语一、写在前言数据结构内容大体已经学的差不多,终于迈进了算法的大门,下面将学习几个常见的算法思想,好了闲话不多说,今天让我们走进分治算法的世界。二、分治算法(一)内容介绍分治分治就是分而治之,把一个复杂大的问题分解成一个个小小的问题,然后在去解决这些的小的问题就简单许多了,然原创 2020-09-03 10:44:49 · 229 阅读 · 0 评论 -
【数据结构】图,深度优先遍历,广度优先遍历
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。文章目录一、写在前言二、图(一)深度优先遍历(二)广度优先遍历三、结束语一、写在前言二、图(一)深度优先遍历深度优先遍历(Depth First Search)他是一条道走到黑,走不通了就回去再去走,直到把所有的路走完,这里有一个回溯的过程,所以我们可以运用递归,类似于树的前序遍历,代码很简单。这里不多说直接上代码package com.codingboy.grap原创 2020-09-02 21:42:05 · 117 阅读 · 0 评论 -
【数据结构】平衡二叉树(AVL),左旋转,右旋转,双旋转
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。文章目录一、写在前言二、平衡二叉树(一)平衡二叉树介绍1、Why2、What3、how(二)平常二叉树构造1、左旋转2、右旋转3、双旋转(三)代码实现三、结束语一、写在前言还有一天,后天就要回学校了,心里无比的激动,但是暑假开始之前信誓旦旦说要完成这个完成那个,到头来什么也没完成,SpringBoot没有学完,Vue也没有学完,数据结构还有部分内容,嗐,今天把树的剩余内容搞原创 2020-08-27 15:53:14 · 837 阅读 · 0 评论 -
【数据结构】二叉排序树(BST)添加遍历删除
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。文章目录一、写在前言二、二叉排序树(一)二叉排序树的介绍(二)二叉排序树的创建添加1、思路讲解2、主要代码实现(三)二叉排序树的删除1、思路讲解(1)删除叶子结点(2)删除只有一颗子树的结点(3)删除有两颗子树的结点2、注意事项(三)代码实现三、结束语一、写在前言前面的赫夫曼树,数据压缩,文件压缩解压等内容,看的我实在心累,本想一口气全部看完然后写博客敲敲代码,看是看完了,原创 2020-08-25 15:45:21 · 257 阅读 · 0 评论 -
【算法】排序(4),堆排序
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。文章目录一、写在前言二、排序(一)堆排序1、思路讲解2、代码实现及测试3、难点分析三、结束语一、写在前言四五天没有写博客了,怎么越接近开学的日子越懒惰了呢。哈希表,二叉树,线索二叉树的博客没有写,心里一直想着补,补了半天也没动笔,这不行,不能在拖了,以前的东西既往不咎,今天学了堆排序,那么就先把堆排序的东西写完,这样拖啊拖,真的无穷尽也。二、排序(一)堆排序堆排序是对原创 2020-08-21 12:17:21 · 173 阅读 · 0 评论 -
【算法】查找,线性查找,二分查找,插值查找,斐波那契查找
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。文章目录一、写在前言二、查找1、线性查找2、二分查找3、插值查找4、斐波那契查找三、结束语一、写在前言这里介绍四种查找算法,都比较的简单,线性查找是有序无序都可以,剩余三种都是针对有序表(这里按照默认升序讲解),此外这三种有序查找的本质是分割点选择的不同,其余都一样,这么说还比较稀里糊涂,下面让我们去一探究竟。二、查找1、线性查找说白了就是遍历数组,一个一个的查,直到原创 2020-08-16 22:17:27 · 281 阅读 · 0 评论 -
【算法】排序(3),基数排序,排序算法时间复杂度比较
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。文章目录一、写在前言二、排序(一)基数排序1、思路讲解2、代码实现三、排序算法时间复杂度比较四、结束语一、写在前言我哭了,写的博客没有保存,睡了一觉之后电脑不知道怎么关机了。啊啊啊啊蓝瘦想哭,木有心情bb了,直接上干货,奥利给。二、排序(一)基数排序基数排序是桶排序的扩展,是一种稳定性排序算法,这里稳定性是指:比如小明小红按照身高排队,他俩一样高,本身小红就站在小明前原创 2020-08-15 18:46:22 · 1813 阅读 · 3 评论 -
【算法】排序(2),希尔排序,快速排序,归并排序
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。文章目录一、写在前言二、排序(一)希尔排序(Shell)1、简单介绍2、代码实现(二)快速排序1、思路讲解2、代码实现三、结束语一、写在前言二、排序(一)希尔排序(Shell)1、简单介绍希尔排序(shell) 是对之前讲的插入排序的优化,前面讲的插入排序准确的来说应该叫直接插入排序,他和希尔排序同属于插入排序。假如对于这样的 2 3 4 5 6 1数据进行直接插入原创 2020-08-14 23:07:47 · 349 阅读 · 0 评论 -
【算法】排序(1),冒泡排序,选择排序,插入排序
文章目录一、写在前言二、排序(一)简单介绍(二)冒泡排序1、思路图解2、代码实现(三)选择排序1、思路图解2、代码实现(四)插入排序1、思路讲解2、代码实现三、结束语一、写在前言大学已经两年了,至今对各种排序仍不熟悉,光听说什么希尔排序,归并排序,他们到底是个啥却丝毫不知,有时候恨不得挖个洞钻进去。之前不知道也就算了,别让自己永远不知道。有人在学排序的时候会出现一个问题,学了之后不久就忘掉了,知道有这么一个东西,但最终怎么写却不知道,我认为有两种原因,一没有深刻的了解各个排序算法的流程,也就是计算机是原创 2020-08-12 11:16:41 · 229 阅读 · 0 评论 -
【数据结构】递归,迷宫求解,八皇后问题
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。文章目录一、写在前言二、递归(一)递归介绍1、递归概念2、递归调用机制(java)3、解决的问题4、注意事项(二)迷宫求解(递归)1、求解思路2、代码实现(三)八皇后问题1、求解思路2、代码实现3、代码总结三、结束语一、写在前言二、递归(一)递归介绍1、递归概念简单的来说递归(recursion)就是自己调用自己,将一个复杂的问题分解成相同规模的小问题,从要解决的问题原创 2020-08-10 21:57:34 · 233 阅读 · 0 评论 -
【数据结构】栈,逆波兰表达式求值,中缀表达式转化为后缀表达式
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。文章目录一、写在前言二、栈(一)前缀表达式1、前缀表达式求值(二)逆波兰表达式计算1、运算思路2、代码实现(三)中缀表达式转为后缀表达式1、思路分析2、思路总结3、代码示范4、运行结果及总结三、结束语一、写在前言紧接上一篇文章,下面介绍栈的另一种场景,了解我们手中的计算器是如何进行运算的。二、栈(一)前缀表达式1、前缀表达式求值下面仅仅简单的叙述的一些前缀表达式,重原创 2020-08-08 16:17:41 · 271 阅读 · 0 评论 -
【数据结构】栈,求中缀表达式值思路分析与代码
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。这里写目录标题一、写在前言二、栈(一)数组模拟栈(二)计算中缀表达式1、思路2、代码实现:三、结束语一、写在前言现在是午夜十一点十三分,昨天说不完成栈的内容就要吃粑粑。假如一个男人假如自己说出去话不去实现,那么他还如何称为一个男人。这粑粑我吃定了!二、栈(一)数组模拟栈数组模拟栈思路:1.定义一个变量(指针)top,指向栈底,默认为-1,要牢记我们是通过top来控制原创 2020-08-07 23:22:50 · 998 阅读 · 1 评论 -
【数据结构】链表(Linked List)单链表、双向链表、环形链表(约瑟夫问题)
大家好,我是被白菜拱的猪。一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。这里写目录标题一、写在前言二、链表(一)链表介绍(二)单链表(三)双向链表(四)单向环形链表(约瑟夫问题)三、结束语一、写在前言让我们一天一个脚印,今天就来解决数据结构中的链表问题。二、链表(一)链表介绍链表是有序的列表,但是它在内存中存储是不连续的,如下图所示;链表是以节点的方式来存储,是链式存储每个节点包含 data 域, next 域:指向下一个节点.原创 2020-08-06 21:45:24 · 320 阅读 · 0 评论 -
【数据结构】队列,循坏队列(数组实现)
文章目录一、写在前言二、队列(一)队列介绍(二)数组模拟队列(三)循环队列1、判满条件2、队列元素个数(四)循环队列代码实现三、结束语一、写在前言大二下在学校学习数据结构,老师虽然长的很漂亮又温柔,即便我坐在第一排还是抵不住老师催眠的声音,就这样听着听着睡了一学期,说实话,很对不起老师,做第一排本来想认认真真的听课的,结果太不给面子,在老师眼皮低下睡觉。大二下没有去学校,网课算法,又是一个温柔的老师,这谁能顶得住,果断把电脑关了,看来我迟早要沦陷于温柔的人手里。可以说数据结构,算法这两门课学的很差,原创 2020-08-05 19:46:01 · 346 阅读 · 0 评论