随笔分类 -  算法学习

摘要:最近开始了考研专业课数据结构的复习,严蔚敏的教材在第一章绪论中肤浅地介绍了算法分析的概念和方法,包括时间复杂度的分析,鉴于前段时间在看《算法导论》这本书,也有看MIT的算法导论的开放课程,所以结合书和课程的听课笔记来深入算法的时间复杂度分析。为何算法分析很重要,度量算法好坏的标准是什么,为何引入时间复杂度分析,如何计算一个算法的时间复杂度?本人刚开始学习数据结构和算法时,觉得一个算法写出来就可以了,为啥要分析上半天它的时间复杂度或空间复杂度。当时是因为接触到的算法比较浅显,一看大概就能看出来哪个算法执行更快一点,更节省空间一点。但学习和研究一定要有凭有据。一、如何进行算法分析算法分析指对一个算 阅读全文
posted @ 2011-07-28 20:52 skyline0623 阅读(1032) 评论(0) 推荐(0)
摘要:最近开始了考研专业课的复习,由于一直以来对数据结构和算法的喜爱,所以在考研复习中希望结合考研复习和之前学习《算法导论》和MIT开放课程学到的知识和自己的一些编程经验写写博客,以达到巩固知识和学习交流的目的。这篇文章就当是绪论吧!本人也还在象牙塔下学习,实际项目参与的很不多,所以侃侃而谈这个问题脱离现实也有些不切实际,没有说服力。算法为什么重要?李开复有一篇文章——《算法的力量》(点击打开链接)。《算法导论》的第一张中列举了算法能够解决的问题(本人翻译自英文版,水平有限,^_^):(1)人类基因组计划的目的之一是识别人类DNA中所有的10万种基因, 确定构成人类DNA的30亿种化学碱基对的顺序, 阅读全文
posted @ 2011-07-20 17:14 skyline0623 阅读(189) 评论(0) 推荐(0)
摘要:问题:How can anagrams result from sequences of stack operations? There are two sequences of stack operators which can convert TROT to TORT:[i i i i o o o oi o i i o o i o]whereistands for Push andostands for Pop. Your program should, given pairs of words produce sequences of stack operations which con 阅读全文
posted @ 2011-06-25 12:03 skyline0623 阅读(230) 评论(0) 推荐(0)
摘要:Problem:Fire NetSuppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representing a street or a piece of wall. A blockhouse is a small castle that has four openings through which to shoot. The four openings are facing North, East 阅读全文
posted @ 2011-06-15 11:33 skyline0623 阅读(285) 评论(0) 推荐(0)
摘要:问题:输入N个0~9的整数,可以重复,从小到大打印出这N个数字组成的所有N位数。e.g输入:4002输出:002400420204024004020420200420402400400240204200策略:这道题是一个同学问我的,她帮一个同学完成作业。我刚看到问题的时候,第一个想法就是求出全排列,时间复杂度是O(n!)。写个算法除去重复的数列,再写一个算法排序,一个排序算法比如快速排序的平均时间复杂度O(n*lg n)。但也立马否定了。这个算法在整数个数增加后空间复杂度、时间复杂度都会有巨大的增长。这个算法好理解,但也不够巧妙。其实可以考虑可以在寻找全排列的时候就可以以升序的顺序输出。因为升 阅读全文
posted @ 2011-04-16 08:34 skyline0623 阅读(1189) 评论(0) 推荐(0)
摘要:哈夫曼树介绍:(好吧,部分copy自百度知道^_^) 哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的带权路径长度记为WPL=(W1*L1+W2*L2+W3*L3+...+ Wn*Ln),N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,...n)。可以证明哈夫曼树的WPL是最小的。 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。1、路径和路径长度在一棵树中,从一 阅读全文
posted @ 2010-11-20 14:54 skyline0623 阅读(2565) 评论(0) 推荐(0)