﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-边城夫子-随笔分类-DS&amp;Algorithms</title><link>http://www.blogjava.net/kafka0102/category/21398.html</link><description>如果我不在边城，我一定是在前往边城的路上。</description><language>zh-cn</language><lastBuildDate>Thu, 21 Jun 2007 03:12:57 GMT</lastBuildDate><pubDate>Thu, 21 Jun 2007 03:12:57 GMT</pubDate><ttl>60</ttl><item><title>哈夫曼树及哈夫曼编码</title><link>http://www.blogjava.net/kafka0102/archive/2007/06/21/125469.html</link><dc:creator>kafka0102</dc:creator><author>kafka0102</author><pubDate>Thu, 21 Jun 2007 00:23:00 GMT</pubDate><guid>http://www.blogjava.net/kafka0102/archive/2007/06/21/125469.html</guid><wfw:comment>http://www.blogjava.net/kafka0102/comments/125469.html</wfw:comment><comments>http://www.blogjava.net/kafka0102/archive/2007/06/21/125469.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kafka0102/comments/commentRss/125469.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kafka0102/services/trackbacks/125469.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 哈夫曼树又称最优二叉树，是一种带权路径长度最短的二叉树。所谓树的带权路径长度，就是树中所有的叶结点的权值乘上其到根结点的路径长度（若根结点为0层，叶结点到根结点的路径长度为叶结点的层数）。树的带权路径长度记为WPL=(W1*L1+W2*L2+W3*L3+...+ Wn*Ln)，N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树，相应的叶结点的路径长度为Li(i=1,2,...n)。可以证明哈夫曼树的WPL是最小的。<br>        构造哈夫曼树的算法如下：<br>        1）对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F={T1,T2,T3,...,Ti,..., Tn}，其中每棵二叉树Ti中只有一个权值为Wi的根结点，它的左右子树均为空。<br>        2）在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树，新二叉树的根结点的权值为其左右子树的根结点的权值之和。<br>        3）从F中删除这两棵树，并把这棵新的二叉树同样以升序排列加入到集合F中。<br>        4）重&nbsp;&nbsp;<a href='http://www.blogjava.net/kafka0102/archive/2007/06/21/125469.html'>阅读全文</a><img src ="http://www.blogjava.net/kafka0102/aggbug/125469.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kafka0102/" target="_blank">kafka0102</a> 2007-06-21 08:23 <a href="http://www.blogjava.net/kafka0102/archive/2007/06/21/125469.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据结构与算法学习之字符串模式匹配KMP算法</title><link>http://www.blogjava.net/kafka0102/archive/2007/06/17/124846.html</link><dc:creator>kafka0102</dc:creator><author>kafka0102</author><pubDate>Sun, 17 Jun 2007 14:14:00 GMT</pubDate><guid>http://www.blogjava.net/kafka0102/archive/2007/06/17/124846.html</guid><wfw:comment>http://www.blogjava.net/kafka0102/comments/124846.html</wfw:comment><comments>http://www.blogjava.net/kafka0102/archive/2007/06/17/124846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kafka0102/comments/commentRss/124846.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kafka0102/services/trackbacks/124846.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 设有主串s和子串t，子串t定位是指在主串s中找到一个与子串t相等的子串。通常把主串s称为目标串，把子串t称为模式串，因此定位也称作模式匹配。模式匹配成功是指在目标串s中找到一个模式串t。<br><br>        传统的字符串模式匹配算法（也就是BF算法）就是对于主串和模式串双双自左向右，一个一个字符比较，如果不匹配，主串和模式串的位置指针都要回溯。这样的算法时间复杂度为O（n＊m），其中n和m分别为串s和串t的长度。<br><br>        KMP算法是由Knuth，Morris和Pratt等人共同提出的，所以成为Knuth－Morris－Pratt算法，简称KMP算法。KMP算法是字符串模式匹配中的经典算法。和BF算法相比，KMP算法的不同点是匹配过程中，主串的位置指针不会回溯，这样的结果使得算法时间复杂度只为O（n＋m）。下面说说KMP算法的原理。&nbsp;&nbsp;<a href='http://www.blogjava.net/kafka0102/archive/2007/06/17/124846.html'>阅读全文</a><img src ="http://www.blogjava.net/kafka0102/aggbug/124846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kafka0102/" target="_blank">kafka0102</a> 2007-06-17 22:14 <a href="http://www.blogjava.net/kafka0102/archive/2007/06/17/124846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一道java算法题</title><link>http://www.blogjava.net/kafka0102/archive/2007/03/13/103434.html</link><dc:creator>kafka0102</dc:creator><author>kafka0102</author><pubDate>Tue, 13 Mar 2007 01:06:00 GMT</pubDate><guid>http://www.blogjava.net/kafka0102/archive/2007/03/13/103434.html</guid><wfw:comment>http://www.blogjava.net/kafka0102/comments/103434.html</wfw:comment><comments>http://www.blogjava.net/kafka0102/archive/2007/03/13/103434.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/kafka0102/comments/commentRss/103434.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kafka0102/services/trackbacks/103434.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 网上看到一道java算法题，题目如下： 用1，2，2，3，4，5，这六个数字，用java写一个main函数，打印出所有不同的排列，如：512234，412345等，要求：“4”不能排第3位，“1”与“5”不能相连。&nbsp;&nbsp;<a href='http://www.blogjava.net/kafka0102/archive/2007/03/13/103434.html'>阅读全文</a><img src ="http://www.blogjava.net/kafka0102/aggbug/103434.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kafka0102/" target="_blank">kafka0102</a> 2007-03-13 09:06 <a href="http://www.blogjava.net/kafka0102/archive/2007/03/13/103434.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>