这是一个小练习, 虽然是排序方面的练习, 但是做完之后发现其实是承上启下的一个练习.计算机这玩意, 每天必须得敲点代码, 本质上也是一门手工艺, 和钢琴一样得天天练. 练习的要求是实现链表元素的归并排序. 并不难, 不过小细节还很多,来看看 链表归并排序的思想 改造链表加入尾节点引用 add, re
来看一个并非可以通用的算法, 但是在排布一些特殊的内容上速度很快的算法, 基数排序. 基数排序的思想 桶 核心算法实现 排序总结 基数排序的思想 这个基数排序的思想, 我仔细想了想, 其实本质上非常简单, 因为我们很多时候排序, 都是按照要比较的元素, 从每个元素的左侧开始进行比较的. 比如数字,
昨天拆掉自行车的两个侧轮之后, 今天女儿就会骑车啦, 昨天陪她骑车的时候我提出来让她试试学会自己骑车, 没想到小家伙心态很开放, 要求拆掉, 然后整个下午摔了几次, 但是可以歪歪扭扭的骑很短一段. 结果今天就学会啦. 这个学习的速度看来比快排还要快一些. 快排和归并排序都采取了分治法策略, 所以时间
到目前看完了选择排序, 插入排序(希尔排序), 冒泡排序, 这些都是遍历加遍历, 复杂度都是n平方级别的, 希尔排序稍微好一些. 现在来看看更快的排序, 这些排序或多或少都采取了不断二分的分治法策略, 所以时间复杂度都要比之前平方级别的 来看看这些更快的方法, 首先是归并排序. 归并排序的思想 递归
希尔排序是改进的插入排序, 其思想来自于, 如果数组基本上已经有序, 插入排序的效率非常高, 可能只需要遍历数组很少的几次就搞定了. 来看看希尔排序的思路 希尔排序的思想 希尔排序方法编写 改进希尔排序 冒泡排序 希尔排序的思想 这些成熟的算法基本上都是50-60年代提出来的, 像希尔排序就是195
链表排序的最大问题是, 不能像数组那样简单的交换节点, 要操作一个节点, 很多时候需要知道这个节点之前的节点. 因此像选择排序这种直接通过索引交换位置的方法, 操作链表就变得非常麻烦. 但是插入排序就提供了一个崭新的思路. 插入排序的一大特点之前已经了解了, 就是某个元素的左侧是已经排序的, 右侧(
要看一个排序, 就得把思想记住, 思想记住了, 即使具体代码忘记了, 也可以很快写出来新的应用到工程中, 但要是思路忘记了, 那就等于全部忘光了. 插入排序的思路和核心方法 编写公有方法 递归版本的方法 插入排序的优缺点 递归实现寻找第二最小 插入排序的思路 插入排序的思路是, 对于数组的每一个元素
又到排序了. 上次看算法第四版只是迅速过了一遍, 书一遍看不明白就看两遍, 有些东西必须得硬来才行. 递归的习题就没那么好写了, 有的想了一会就写出来了, 比如那个用三个栈排序的, 但是有些比如全排列和递归的动态规划就不那么明显会写了. 估计还是每一次要维持一个背包的这种对象, 在递归之间如何传递,
到递归了, 看起来容易的递归用起来难, 用起来简单的递归理解起来难...用好递归真的不容易. 这次来好好看一下. 递归的核心并不是什么调用自己, 而是将一个问题分解成更小的问题, 小问题域大问题有着同样操作过程. 调用自己的方法称为递归方法. 递归方案设计 两个小题目 递归内部的调用 - 进入递归之
这两天沉迷POE中, 果然是复杂一些的游戏才玩的进去. 可以暂时玩着等今年的废土3和博德之门3了. 当然开发方面也绝对不能落下, 这两天把栈相关的练习写完了, 其中有两个比较大的程序值得留意一下. 分别是Lisp表达式解析和用栈来记录路径走迷宫. Lisp表达式解析 迷宫寻路 Lisp表达式解析 L