随笔分类 - 算法
摘要:今天在Google Rss看到一篇陈皓的文章:程序算法与人生选择,把职场的道理用程序员的的语言描述出来,教大家刚毕业时怎样择业,选择相对最好,最适合自己的工作. 文章中提到的一些算法让我想起了大学时候学习编程的日子,像排序算法是在「数据结构」课程学习的,贪婪算法是在「算法设计」课程中学习的,动态规划,dijstra 是在「运筹数学」中学习的。那时候主要都是用c,mathLab语言去写算法代码。这些经典的算法,是IT职业生涯最宝贵且永不过时的资源,因此看到陈皓的这篇文章时,想起了当年一个人在机房,或在宿舍自己的那台128M内存电脑上写代码的日子,所以想写点代码回忆下我们那些年学过的一些算法。排序
阅读全文
摘要:这里随便写了个用java实现的哈夫曼编码的算法(二叉树表示)。 /***@(#)岑村高科*/package cn.javayy.struct;/***定义了一种接口,要进行编码的最小单元类必需实现些接口*@authorboss**createon:下午10:56:592009-5-19*/publicinterface Combinable<T> extends Comparable<T> { T combinate(T a,T b); }==================================================================
阅读全文
摘要:红黑树的作用大 家都知道“树结构”在整个数据结构是比较重要的一种,它既有线性表的查找速度,也有链表结构的插入删除性能。不错,理想中的平衡二叉树确实这样,但是现实 中情况并不总这样如意。如果一组数据比较有序,如递增,或递减的出现,那整个树将变得极其不平衡起来,假如我们现在的一组数据 是:2,4,45,65,76,形成的树如下图:这种树其实已经是一种链表结构了,查找复杂度为O(n)。或许你想到办法了,对,就是这样。树变得不平衡了,我们必需使之再平衡起来。这就是笔者这篇文章要说的问题:平衡二叉树,有时也叫红黑树。平衡规则:每个结点不是红色就是黑色(这也是红黑树来由)根结点总是黑色的如果父结点是红色,
阅读全文