随笔分类 - 基础算法
摘要:当我刷到动态规划这一章的时候,突然想起以前的部门研发比武,就是一道需要运用动态规划思想来处理的题目,团灭了99%的人,而我也是这99%中的一员,哈哈,只怪出题的人太狠了。 以下的代码是汽车车间装配时间最短的代码习题,懒于整理,折叠起来: #include <iostream> #include <v
阅读全文
摘要:红黑树是满足如下条件的二叉搜索树。 1、每个节点要么是红色的,要么是黑色的。 2、根节点是黑色。 3、每个叶子节点是黑色的。 4、如果一个节点是红色的,那么它的2个子节点是黑色的。 5、对每个节点,从它到它的后代叶子节点的简单路径上,均包含相同数目的黑色节点。 练习完这些代码,我感觉我把stl的rb
阅读全文
摘要:看到二叉搜索树,就会回想到当年在大学课堂学习数据结构的情景,真的是悠悠岁月,欲说当年好困惑。 二叉树的可以参考的资料繁多,这里就不多说了,非要说的话,请看算法导论第12章吧。 下面是代码,包含了一点点C++11的特性。 1、二叉树遍历,没有比递归实现更优雅简洁直观的了,非要说非递归就是好的话我也赞成
阅读全文
摘要:理解了基数排序,也就理解了桶排序。 桶排序就是基数排序的一种优化,从MSD开始,即取最高位来排一次序,如果最高位没有重复(意味着没有冲突需要处理),是算法的最佳状态,O(n)。 如果有冲突,就将冲突的元素存放到对应的桶里(代码就是一个链表或者数组或者stl容器),然后对每个桶进行一次插入排序,平均情
阅读全文
摘要:计数,基数的中文读音都一样,这翻译的人还嫌我们计算机不够乱,真的想吐槽。 不管了,毕竟代码还是不一样的。 1、计数排序(counter sort): 通过一个上限来统计集合里的数值(或者其他非数值类型映射的数值),并累计比小于自己(包括)的数值的统计的个数,从而形成排序的索引(也就是前面有多少个小于
阅读全文
摘要:囧,道理很简单,实践起来却没那么简单。因为编程语言的语言元素跟算法描述数据结构并不完全一致。 经过迭代(此处省略800字),补充上对于归并排序对于小数组采用插入排序的代码。 首先是插入排序: 然后是普通的归并排序: 归并排序中的小数组采用插入排序: 测试函数:
阅读全文
摘要:这个算是捏软柿子了哇。 不过用模板来实现也是非常有趣。 快排的核心就是: 1、在数组中选择一个参考值X,再设置2个索引,一个用来记录比这个X小的位置i,一个用来记录比这个X大的位置j 2、比如是升序排序,就把大的值交换到小的值的位置,小的值交换到大的值的位置,如果是降序,就相反的交换,总而言之,就是
阅读全文
摘要:这两年一直埋首在C相关的代码中,都快忘记自己曾经热爱并赖以南征北战过的C++了,而且C++11出来那么久了,瞄了几眼,没练过都不敢说自己会C++了, 正好很多基础算法没正经的学习过,打算逐个(算法导论里的)用C++完成一遍好好练练手。(其实没那么多时间,能写几个就写几个啦,加之水平有限) 结果呢,一
阅读全文

浙公网安备 33010602011771号