软件设计的两个维度

我习惯把软件系统的逻辑放到两个维度上来分别来考量:整体结构 VS 组成部分 应对可能的变化,是系统设计的重要目标,亦是一个常见的挑战。对变化的部分进行总结,根据变化的形式不同,有两种情况:

查看全文

最优Topn算法

在大量的数据记录中,依据某可排序的记录属性(一般为数字类型),找出最大的前N个记录,称为 TopN问题。这是一个常常遇到的问题,也是一个比较简单的算法问题,却很少能有人能写出最优化的 topn算法。本文对常见的TopN算法,进行分析比较,最后给出最优的TopN算法:基于小根堆的筛选 法.

查看全文