链表排序的最大问题是, 不能像数组那样简单的交换节点, 要操作一个节点, 很多时候需要知道这个节点之前的节点. 因此像选择排序这种直接通过索引交换位置的方法, 操作链表就变得非常麻烦. 但是插入排序就提供了一个崭新的思路. 插入排序的一大特点之前已经了解了, 就是某个元素的左侧是已经排序的, 右侧(
要看一个排序, 就得把思想记住, 思想记住了, 即使具体代码忘记了, 也可以很快写出来新的应用到工程中, 但要是思路忘记了, 那就等于全部忘光了. 插入排序的思路和核心方法 编写公有方法 递归版本的方法 插入排序的优缺点 递归实现寻找第二最小 插入排序的思路 插入排序的思路是, 对于数组的每一个元素
又到排序了. 上次看算法第四版只是迅速过了一遍, 书一遍看不明白就看两遍, 有些东西必须得硬来才行. 递归的习题就没那么好写了, 有的想了一会就写出来了, 比如那个用三个栈排序的, 但是有些比如全排列和递归的动态规划就不那么明显会写了. 估计还是每一次要维持一个背包的这种对象, 在递归之间如何传递,
到递归了, 看起来容易的递归用起来难, 用起来简单的递归理解起来难...用好递归真的不容易. 这次来好好看一下. 递归的核心并不是什么调用自己, 而是将一个问题分解成更小的问题, 小问题域大问题有着同样操作过程. 调用自己的方法称为递归方法. 递归方案设计 两个小题目 递归内部的调用 - 进入递归之
这两天沉迷POE中, 果然是复杂一些的游戏才玩的进去. 可以暂时玩着等今年的废土3和博德之门3了. 当然开发方面也绝对不能落下, 这两天把栈相关的练习写完了, 其中有两个比较大的程序值得留意一下. 分别是Lisp表达式解析和用栈来记录路径走迷宫. Lisp表达式解析 迷宫寻路 Lisp表达式解析 L
要敲代码, 设计先行. 栈不再解释了, 这里主要看设计思想. 修炼完数据结构与算法之后, 可以左手一把精钢哈希表盾牌, 右手一条链表数组剑鞭, 可以去刷怪(题)了. 今天正好是难得的2月29日, 必须得发一篇博文. 最近在好友安利下开始玩起了PathOfExile, 感觉是一个巨坑, 不过再坑也不能
看了数组, 自然就想到用链表了. 说到这里我想起来刀魂里的Ivy, 一把剑鞭, 剑就像数组连在一起. 而链表就打散了连续在一起的内存地址. 看来修炼完数据结构与算法之后, 可以左手一把精钢哈希表盾牌, 右手一条链表数组剑鞭, 可以去刷怪(题)了. LinkedBag设计 编写add方法 toArra
看了定长, 再来看变长数组, 在之前, 先补一些让类更安全的方法. 编程技巧 - 让类更安全 变长数组实现包 编程技巧 - 让类更安全 让类更安全的方法就是尽可能少的暴露内部数据. 除此之外, 还应该防着为初始化完成的类, 以及应该对包的上限进行一些限制. 添加两个私有变量如下, 一个表示当前的对象
现在准备开始看数据结构了, 不使劲补补是不行的, 顺便也打打基础, 看看内部原理, 争取能到LeetCode上边去刷点题目. 先从最简单的开始, 没有一上来就找一本巨著看, 而是找了一本数据结构与抽象:Java语言描述(原书第4版), 这本看了一下不是非常硬核, 上来就搞那么强的理论. 书的配套源码