摘要: MIT6.006是算法导论课,Lec03主要讲插入排序,归并排序,以及分析方法(递归树)等。插入排序,可以分为线性插入排序、二分插入排序,区别在于当把数组中某元素插入到前面的有序列表中时,前者遍历,后者二分,后者更加稳定。归并排序,是用分治思想处理,先分别排序,再合并。递归树,我的理解是算法消耗时间T(n)用树状的结构,表示每次递归消耗的时间,这些时间累加就是T(n),而递归树的每一行和相邻行之间的关系也是比较容易观察的,这就容易写出时间复杂度的表达式了。另外有主定理可以使用。参考了《算法导论》和网络上的资源,以下是我修改后的代码:#coding:utf8#插入排序 版本1(线性插入排序)de 阅读全文
posted @ 2013-08-20 19:45 ChrisZZ 阅读(727) 评论(0) 推荐(0) 编辑
摘要: MIT6.006是算法导论,Lec02讲的是Document Distance(文档距离),比如比较两个文档相似度或者搜索引擎中都会用到。计算步骤为:1.将每个文档分离为单词2.统计词频3.计算点积(并做除法)说明:1.“单词”指的是字母和数字(alphanumeric)2.每个文档统计完词频后得到的list,可看作一个向量3.两个文档间的相似度,是相似的单词除以总的单词,类似于两个向量的夹角公式MIT6.006下载的相关资源中,给出了8个逐渐改善的代码版本,但本质都是一样的。代码8短小精悍,我添加了一些中文注释#coding:utf8#description:计算文档距离import sys 阅读全文
posted @ 2013-08-20 13:34 ChrisZZ 阅读(1449) 评论(0) 推荐(0) 编辑