<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>潘魏增 &#187; 算法</title>
	<atom:link href="http://panweizeng.com/archives/tag/%e7%ae%97%e6%b3%95/feed" rel="self" type="application/rss+xml" />
	<link>http://panweizeng.com</link>
	<description>活在回忆里,细数时间下过的蛋.</description>
	<lastBuildDate>Sun, 29 Aug 2010 17:03:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>DataStructure.js</title>
		<link>http://panweizeng.com/archives/132</link>
		<comments>http://panweizeng.com/archives/132#comments</comments>
		<pubDate>Sun, 06 Apr 2008 06:59:00 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[数据结构]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://panweizeng.com/archives/132</guid>
		<description><![CDATA[去年照着严蔚敏的《数据结构》写了这个脚本，用Javascript实现了栈、队列、链表、树和二叉树。后来在工作中没发现能派上什么用场，丢在一边很久也没理会。今天偶然翻了一下觉得有些写得还挺有意思的。 例如求树的所有叶子节点数。 递归解法： getLeafCount:function(){ &#160; &#160; var&#160;_count = 0; &#160; &#160; for(var&#160;i in this.children){ &#160; &#160; &#160; &#160; if(this.children[i].hasChild())&#160; &#160; &#160; &#160; &#160; &#160; &#160; _count += this.children[i].getLeafCount(); &#160; &#160; &#160; &#160; else&#160; &#160; &#160; &#160; &#160; &#160; &#160; _count++; &#160; &#160; } &#160; &#160; return&#160;_count; } 使用堆栈的非递归解法： getLeafCount:function() { &#160; &#160; var&#160;_stack = new [...]]]></description>
			<content:encoded><![CDATA[<p>去年照着严蔚敏的<a href="http://china-pub.com/1708">《数据结构》</a>写了<a href="http://panweizeng.com/others/DataStructure.js">这个脚本</a>，用Javascript实现了栈、队列、链表、树和二叉树。后来在工作中没发现能派上什么用场，丢在一边很久也没理会。今天偶然翻了一下觉得有些写得还挺有意思的。<br />
例如求树的所有叶子节点数。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">递归解法：</span></li>
<li><span style="color: Blue;">getLeafCount</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_count</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> </span><span style="color: Green;">in</span><span style="color: Gray;"> </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">children</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">children</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">hasChild</span><span style="color: Olive;">())</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_count</span><span style="color: Gray;"> += </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">children</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">getLeafCount</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_count</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_count</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">使用堆栈的非递归解法：</span></li>
<li><span style="color: Blue;">getLeafCount</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_stack</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">BX</span><span style="color: Gray;">.</span><span style="color: Blue;">DataStructure</span><span style="color: Gray;">.</span><span style="color: Blue;">Stack</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_tree</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_count</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: Blue;">_tree</span><span style="color: Gray;"> != </span><span style="color: Green;">null</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Blue;">_tree</span><span style="color: Gray;">.</span><span style="color: Blue;">children</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">_tree</span><span style="color: Gray;">.</span><span style="color: Blue;">children</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">hasChild</span><span style="color: Olive;">())</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_stack</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">(</span><span style="color: Blue;">_tree</span><span style="color: Gray;">.</span><span style="color: Blue;">children</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_count</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_tree</span><span style="color: Gray;"> = </span><span style="color: Blue;">_stack</span><span style="color: Gray;">.</span><span style="color: Blue;">pop</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_count</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">使用队列的非递归解法：</span></li>
<li><span style="color: Blue;">getLeafCount</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_queue</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">BX</span><span style="color: Gray;">.</span><span style="color: Blue;">DataStructure</span><span style="color: Gray;">.</span><span style="color: Blue;">Queue</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_tree</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_count</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: Blue;">_tree</span><span style="color: Gray;"> != </span><span style="color: Green;">null</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Blue;">_tree</span><span style="color: Gray;">.</span><span style="color: Blue;">children</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">_tree</span><span style="color: Gray;">.</span><span style="color: Blue;">children</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">hasChild</span><span style="color: Olive;">())</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_queue</span><span style="color: Gray;">.</span><span style="color: Blue;">enQueue</span><span style="color: Olive;">(</span><span style="color: Blue;">_tree</span><span style="color: Gray;">.</span><span style="color: Blue;">children</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_count</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_tree</span><span style="color: Gray;"> = </span><span style="color: Blue;">_queue</span><span style="color: Gray;">.</span><span style="color: Blue;">deQueue</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_count</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>又如求二叉树同一深度的所有子节点。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">广度优先</span><span style="color: Olive;">(</span><span style="color: Blue;">Queue</span><span style="color: Gray;">实现</span><span style="color: Olive;">)</span></li>
<li><span style="color: Blue;">getChildrenByDepth</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">depth</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">depth</span><span style="color: Gray;"> &lt; </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">depth</span><span style="color: Gray;"> == </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Teal;">Array</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_queue</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">BX</span><span style="color: Gray;">.</span><span style="color: Blue;">DataStructure</span><span style="color: Gray;">.</span><span style="color: Blue;">Queue</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//同一层元素的个数队列，对头为同一层元素的个数</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_depthQueue</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">BX</span><span style="color: Gray;">.</span><span style="color: Blue;">DataStructure</span><span style="color: Gray;">.</span><span style="color: Blue;">Queue</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_children</span><span style="color: Gray;"> = </span><span style="color: Olive;">[]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_depth</span><span style="color: Gray;"> = </span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_count</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">_queue</span><span style="color: Gray;">.</span><span style="color: Blue;">enQueue</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">_queue</span><span style="color: Gray;">.</span><span style="color: Blue;">isEmpty</span><span style="color: Olive;">())</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">_depth</span><span style="color: Gray;"> == </span><span style="color: Blue;">depth</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"> </span><span style="color: Blue;">_children</span><span style="color: Gray;"> = </span><span style="color: Blue;">_queue</span><span style="color: Gray;">.</span><span style="color: Blue;">elements</span><span style="color: Gray;">; </span><span style="color: Green;">break</span><span style="color: Gray;">;</span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_depthQueue</span><span style="color: Gray;">.</span><span style="color: Blue;">enQueue</span><span style="color: Olive;">(</span><span style="color: Blue;">_queue</span><span style="color: Gray;">.</span><span style="color: Blue;">getLength</span><span style="color: Olive;">())</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_treeNode</span><span style="color: Gray;"> = </span><span style="color: Blue;">_queue</span><span style="color: Gray;">.</span><span style="color: Blue;">deQueue</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">hasLeftChild</span><span style="color: Olive;">())</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_queue</span><span style="color: Gray;">.</span><span style="color: Blue;">enQueue</span><span style="color: Olive;">(</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">leftChild</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">hasRightChild</span><span style="color: Olive;">())</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_queue</span><span style="color: Gray;">.</span><span style="color: Blue;">enQueue</span><span style="color: Olive;">(</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">rightChild</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_count</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//当计数等于同一层元素个数的时候，_depthQueue置0，下一次循环时推入下一层的个数</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">_count</span><span style="color: Gray;"> == </span><span style="color: Blue;">_depthQueue</span><span style="color: Gray;">.</span><span style="color: Blue;">getHead</span><span style="color: Olive;">())</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_depth</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_count</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_depthQueue</span><span style="color: Gray;">.</span><span style="color: Blue;">clear</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_children</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">深度优先</span><span style="color: Olive;">(</span><span style="color: Blue;">Stack</span><span style="color: Gray;">实现</span><span style="color: Olive;">)</span></li>
<li><span style="color: Blue;">getChildrenByDepth</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">depth</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">depth</span><span style="color: Gray;"> &lt; </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Green;">null</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">depth</span><span style="color: Gray;"> == </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Teal;">Array</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_stack</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">BX</span><span style="color: Gray;">.</span><span style="color: Blue;">DataStructure</span><span style="color: Gray;">.</span><span style="color: Blue;">Stack</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_depthStack</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">BX</span><span style="color: Gray;">.</span><span style="color: Blue;">DataStructure</span><span style="color: Gray;">.</span><span style="color: Blue;">Stack</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_children</span><span style="color: Gray;"> = </span><span style="color: Olive;">[]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_currentDepth</span><span style="color: Gray;"> = </span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">isMatched</span><span style="color: Gray;"> = </span><span style="color: Green;">false</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">_stack</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">_depthStack</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">(</span><span style="color: Blue;">_currentDepth</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">_stack</span><span style="color: Gray;">.</span><span style="color: Blue;">isEmpty</span><span style="color: Olive;">())</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//元素和该元素相应的深度同时出栈</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_treeNode</span><span style="color: Gray;"> = </span><span style="color: Blue;">_stack</span><span style="color: Gray;">.</span><span style="color: Blue;">pop</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_currentDepth</span><span style="color: Gray;"> = </span><span style="color: Blue;">_depthStack</span><span style="color: Gray;">.</span><span style="color: Blue;">pop</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">hasLeftChild</span><span style="color: Olive;">()</span><span style="color: Gray;"> || </span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">hasRightChild</span><span style="color: Olive;">())</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_currentDepth</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//判断是否到达所求深度，如果是则添加到_children数组，否则当前深度和子元素都入栈</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">isMatched</span><span style="color: Gray;"> = </span><span style="color: Blue;">_currentDepth</span><span style="color: Gray;"> == </span><span style="color: Blue;">depth</span><span style="color: Gray;"> ? </span><span style="color: Green;">true</span><span style="color: Gray;"> : </span><span style="color: Green;">false</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">hasLeftChild</span><span style="color: Olive;">())</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">isMatched</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_children</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">(</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">leftChild</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_stack</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">(</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">leftChild</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_depthStack</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">(</span><span style="color: Blue;">_currentDepth</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">hasRightChild</span><span style="color: Olive;">())</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">isMatched</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_children</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">(</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">rightChild</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_stack</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">(</span><span style="color: Blue;">_treeNode</span><span style="color: Gray;">.</span><span style="color: Blue;">rightChild</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_depthStack</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">(</span><span style="color: Blue;">_currentDepth</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_children</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>脚本在线地址：<a href="http://panweizeng.com/others/DataStructure.js">http://panweizeng.com/others/DataStructure.js</a></p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/132/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>用Javascript操作硬盘文件</title>
		<link>http://panweizeng.com/archives/123</link>
		<comments>http://panweizeng.com/archives/123#comments</comments>
		<pubDate>Sun, 27 Jan 2008 10:20:00 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://panweizeng.com/archives/123</guid>
		<description><![CDATA[有一个日志文件格式是这样的4129,23&#124;4074,25&#124;4011,16&#124;……每组以&#124;分隔，前者是更新的模板ID，后者是该模板被关联的频道，需要统计模板的关联频道数并排序。 输入： 4129,23&#124;4074,25&#124;4011,16&#124;…… 输出： 模板ID 关联频道数 3261 871 523 824 2039 811 …… html代码 &#60;form&#62; &#60;input&#160;type=&#34;file&#34; size=&#34;30&#34; id=&#34;filePath&#34; /&#62; &#60;input&#160;type=&#34;button&#34; value=&#34;分析&#34; id=&#34;analyze&#34; /&#62; &#60;/form&#62; javascript处理代码 function $(el){ return document.getElementById(el);} var&#160;analyze = function(){ &#160; &#160; this.analyze = 'analyze'; &#160; &#160; this.filePath = 'filePath'; &#160; &#160; this.readFlag = 1; &#160; &#160; this.writeFlag = 2; &#160; &#160; //匹配数据组的正则表达式 [...]]]></description>
			<content:encoded><![CDATA[<p>有一个日志文件格式是这样的4129,23|4074,25|4011,16|……每组以|分隔，前者是更新的模板ID，后者是该模板被关联的频道，需要统计模板的关联频道数并排序。</p>
<p>输入：<br />
4129,23|4074,25|4011,16|……<br />
输出：<br />
模板ID    关联频道数<br />
3261      871<br />
 523      824<br />
2039      811<br />
……</p>
<p>html代码</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">form</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">input</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">file</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">size</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">30</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">filePath</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">input</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">button</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">分析</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">analyze</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">form</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>javascript处理代码</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">function</span><span style="color: Gray;"> $</span><span style="color: Olive;">(</span><span style="color: Blue;">el</span><span style="color: Olive;">){</span><span style="color: Gray;"> </span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementById</span><span style="color: Olive;">(</span><span style="color: Blue;">el</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">analyze</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">analyze</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">analyze</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">filePath</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">filePath</span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">readFlag</span><span style="color: Gray;"> = </span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">writeFlag</span><span style="color: Gray;"> = </span><span style="color: Maroon;">2</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//匹配数据组的正则表达式</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">regPattern</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">/</span><span style="color: Red;">^(d+),(d+)$</span><span style="color: #8b0000;">/</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cache</span><span style="color: Gray;"> = </span><span style="color: Olive;">{</span><span style="color: Blue;">result</span><span style="color: Gray;">:</span><span style="color: Olive;">{}</span><span style="color: Gray;">,</span><span style="color: Blue;">array</span><span style="color: Gray;">:</span><span style="color: Olive;">[]}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">fso</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">ActiveXObject</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Scripting.FileSystemObject</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">analyze</span><span style="color: Gray;">.</span><span style="color: Blue;">prototype</span><span style="color: Gray;"> = </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">start</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_filePath</span><span style="color: Gray;"> = $</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">filePath</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">value</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">pairArray</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">read</span><span style="color: Olive;">(</span><span style="color: Blue;">_filePath</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">split</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">|</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: Blue;">pair</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;"> ; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Blue;">pairArray</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;"> ; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//如果正则表达式匹配成功</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//则pair[0]为全匹配，pair[1]为第一个子匹配，pair[2]为第二个子匹配</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">pair</span><span style="color: Gray;"> =&nbsp; </span><span style="color: Blue;">pairArray</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">match</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">regPattern</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">pair</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cache</span><span style="color: Gray;">.</span><span style="color: Blue;">result</span><span style="color: Olive;">[</span><span style="color: Blue;">pair</span><span style="color: Olive;">[</span><span style="color: Maroon;">1</span><span style="color: Olive;">]]</span><span style="color: Gray;"> != </span><span style="color: Blue;">undefined</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cache</span><span style="color: Gray;">.</span><span style="color: Blue;">result</span><span style="color: Olive;">[</span><span style="color: Blue;">pair</span><span style="color: Olive;">[</span><span style="color: Maroon;">1</span><span style="color: Olive;">]]</span><span style="color: Gray;"> != </span><span style="color: Green;">null</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cache</span><span style="color: Gray;">.</span><span style="color: Blue;">result</span><span style="color: Olive;">[</span><span style="color: Blue;">pair</span><span style="color: Olive;">[</span><span style="color: Maroon;">1</span><span style="color: Olive;">]]</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cache</span><span style="color: Gray;">.</span><span style="color: Blue;">result</span><span style="color: Olive;">[</span><span style="color: Blue;">pair</span><span style="color: Olive;">[</span><span style="color: Maroon;">1</span><span style="color: Olive;">]]</span><span style="color: Gray;"> = </span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//从result拷贝到array，方便快速排序</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> </span><span style="color: Green;">in</span><span style="color: Gray;"> </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cache</span><span style="color: Gray;">.</span><span style="color: Blue;">result</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cache</span><span style="color: Gray;">.</span><span style="color: Blue;">array</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">({</span><span style="color: Blue;">templateId</span><span style="color: Gray;">:</span><span style="color: Blue;">i</span><span style="color: Gray;">,</span><span style="color: Blue;">channelCount</span><span style="color: Gray;">:</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cache</span><span style="color: Gray;">.</span><span style="color: Blue;">result</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cache</span><span style="color: Gray;">.</span><span style="color: Blue;">array</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">quickSort</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cache</span><span style="color: Gray;">.</span><span style="color: Blue;">array</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">write</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">quickSort</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">cache</span><span style="color: Gray;">.</span><span style="color: Blue;">array</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: Blue;">_filePath</span><span style="color: Gray;">.</span><span style="color: Blue;">replace</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">.txt</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: #8b0000;">''</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: #8b0000;">'</span><span style="color: Red;">_statistics.txt</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">alert</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">done!</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">read</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">filePath</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_file</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">fso</span><span style="color: Gray;">.</span><span style="color: Blue;">OpenTextFile</span><span style="color: Olive;">(</span><span style="color: Blue;">filePath</span><span style="color: Gray;">, </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">readFlag</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_string</span><span style="color: Gray;"> = </span><span style="color: Blue;">_file</span><span style="color: Gray;">.</span><span style="color: Blue;">ReadAll</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_file</span><span style="color: Gray;">.</span><span style="color: Blue;">close</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_string</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">write</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">array</span><span style="color: Gray;">,</span><span style="color: Blue;">filePath</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_file</span><span style="color: Gray;"> = </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">fso</span><span style="color: Gray;">.</span><span style="color: Blue;">OpenTextFile</span><span style="color: Olive;">(</span><span style="color: Blue;">filePath</span><span style="color: Gray;">, </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">writeFlag</span><span style="color: Gray;">,</span><span style="color: Green;">true</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_file</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">模板ID&nbsp; &nbsp; 关联频道数</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> </span><span style="color: Green;">in</span><span style="color: Gray;"> </span><span style="color: Blue;">array</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_file</span><span style="color: Gray;">.</span><span style="color: Blue;">WriteLine</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">digitFix</span><span style="color: Olive;">(</span><span style="color: Blue;">array</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">][</span><span style="color: #8b0000;">'</span><span style="color: Red;">templateId</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">)</span><span style="color: Gray;">+</span><span style="color: #8b0000;">'</span><span style="color: Red;">&nbsp; &nbsp;&nbsp; </span><span style="color: #8b0000;">'</span><span style="color: Gray;">+ </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">digitFix</span><span style="color: Olive;">(</span><span style="color: Blue;">array</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">][</span><span style="color: #8b0000;">'</span><span style="color: Red;">channelCount</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">,</span><span style="color: Maroon;">4</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_file</span><span style="color: Gray;">.</span><span style="color: Blue;">close</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">quickSort</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">array</span><span style="color: Gray;">,</span><span style="color: Blue;">left</span><span style="color: Gray;">,</span><span style="color: Blue;">right</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">left</span><span style="color: Gray;"> == </span><span style="color: Green;">null</span><span style="color: Gray;"> &amp;&amp; </span><span style="color: Blue;">right</span><span style="color: Gray;"> == </span><span style="color: Green;">null</span><span style="color: Olive;">){</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">left</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">right</span><span style="color: Gray;"> = </span><span style="color: Blue;">array</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">swap</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">,</span><span style="color: Blue;">j</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">==</span><span style="color: Blue;">j</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">return</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">temp</span><span style="color: Gray;"> = </span><span style="color: Blue;">_array</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_array</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">_array</span><span style="color: Olive;">[</span><span style="color: Blue;">j</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_array</span><span style="color: Olive;">[</span><span style="color: Blue;">j</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Blue;">temp</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;">, </span><span style="color: Blue;">last</span><span style="color: Gray;">,</span><span style="color: Blue;">_array</span><span style="color: Gray;"> = </span><span style="color: Blue;">array</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">left</span><span style="color: Gray;"> &gt;= </span><span style="color: Blue;">right</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Green;">return</span><span style="color: Gray;"> </span><span style="color: Blue;">_array</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">last</span><span style="color: Gray;"> = </span><span style="color: Blue;">left</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Blue;">left</span><span style="color: Gray;"> + </span><span style="color: Maroon;">1</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt;= </span><span style="color: Blue;">right</span><span style="color: Gray;">;</span><span style="color: Blue;">i</span><span style="color: Gray;">++ </span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">compare</span><span style="color: Olive;">(</span><span style="color: Blue;">_array</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">, </span><span style="color: Blue;">_array</span><span style="color: Olive;">[</span><span style="color: Blue;">left</span><span style="color: Olive;">]))</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">swap</span><span style="color: Olive;">(</span><span style="color: Gray;">++</span><span style="color: Blue;">last</span><span style="color: Gray;">,</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">swap</span><span style="color: Olive;">(</span><span style="color: Blue;">left</span><span style="color: Gray;">,</span><span style="color: Blue;">last</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">quickSort</span><span style="color: Olive;">(</span><span style="color: Blue;">_array</span><span style="color: Gray;">,</span><span style="color: Blue;">left</span><span style="color: Gray;">,</span><span style="color: Blue;">last</span><span style="color: Gray;">-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">quickSort</span><span style="color: Olive;">(</span><span style="color: Blue;">_array</span><span style="color: Gray;">,</span><span style="color: Blue;">last</span><span style="color: Gray;">+</span><span style="color: Maroon;">1</span><span style="color: Gray;">,</span><span style="color: Blue;">right</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_array</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">compare</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">x</span><span style="color: Gray;">,</span><span style="color: Blue;">y</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">x</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">channelCount</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;"> &gt; </span><span style="color: Blue;">y</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">channelCount</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">digitFix</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">number</span><span style="color: Gray;">,</span><span style="color: Blue;">count</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_string</span><span style="color: Gray;"> = </span><span style="color: Blue;">number</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">''</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_count</span><span style="color: Gray;"> = </span><span style="color: Blue;">count</span><span style="color: Gray;">-</span><span style="color: Blue;">_string</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Blue;">_count</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_string</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">&nbsp;</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> + </span><span style="color: Blue;">_string</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_string</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">bind</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">el</span><span style="color: Gray;">,</span><span style="color: Blue;">type</span><span style="color: Gray;">,</span><span style="color: Blue;">fn</span><span style="color: Gray;">,</span><span style="color: Blue;">range</span><span style="color: Gray;">,</span><span style="color: Blue;">params</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_params</span><span style="color: Gray;"> = </span><span style="color: Blue;">params</span><span style="color: Gray;"> == </span><span style="color: Green;">null</span><span style="color: Gray;"> || </span><span style="color: Blue;">params</span><span style="color: Gray;">.</span><span style="color: Blue;">constructor</span><span style="color: Gray;"> != </span><span style="color: Teal;">Array</span><span style="color: Gray;">&nbsp; ? </span><span style="color: Olive;">[</span><span style="color: Blue;">params</span><span style="color: Olive;">]</span><span style="color: Gray;"> : </span><span style="color: Blue;">params</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">addEventListener</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">addEventListener</span><span style="color: Olive;">(</span><span style="color: Blue;">type</span><span style="color: Gray;">,</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Blue;">fn</span><span style="color: Gray;">.</span><span style="color: Blue;">apply</span><span style="color: Olive;">(</span><span style="color: Blue;">range</span><span style="color: Gray;">,</span><span style="color: Blue;">_params</span><span style="color: Olive;">)}</span><span style="color: Gray;">, </span><span style="color: Green;">false</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">else</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">el</span><span style="color: Gray;">.</span><span style="color: Blue;">attachEvent</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">on</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">+</span><span style="color: Blue;">type</span><span style="color: Gray;">, </span><span style="color: Green;">function</span><span style="color: Olive;">(){</span><span style="color: Blue;">fn</span><span style="color: Gray;">.</span><span style="color: Blue;">apply</span><span style="color: Olive;">(</span><span style="color: Blue;">range</span><span style="color: Gray;">,</span><span style="color: Blue;">_params</span><span style="color: Olive;">)})</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">init</span><span style="color: Gray;">:</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">bind</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">(</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">analyze</span><span style="color: Olive;">)</span><span style="color: Gray;">,</span><span style="color: #8b0000;">'</span><span style="color: Red;">click</span><span style="color: #8b0000;">'</span><span style="color: Gray;">,</span><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">start</span><span style="color: Gray;">,</span><span style="color: Green;">this</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">aa</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">analyze</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">aa</span><span style="color: Gray;">.</span><span style="color: Blue;">init</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/123/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>c#版快速排序</title>
		<link>http://panweizeng.com/archives/91</link>
		<comments>http://panweizeng.com/archives/91#comments</comments>
		<pubDate>Mon, 09 Jul 2007 14:03:33 +0000</pubDate>
		<dc:creator>Pan</dc:creator>
				<category><![CDATA[学习]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://www.panweizeng.com/archives/91</guid>
		<description><![CDATA[copy了K*R《c程序设计语言》里面的实现。 using System; using System.Collections.Generic; using System.Text; namespace LuceneTest { class Test { static void Main(string[] args) { int[] array = { 32, 45, 12, 18, 25, 60, 53, 78, 99, 83,21,8,10,33,24,66,80,23,18,95,61 }; qsort(ref array,0,array.Length-1); for (int i = 0; i < array.Length; i++) { Console.WriteLine(array[i]); } Console.Read(); } public static void qsort(ref int[] v, [...]]]></description>
			<content:encoded><![CDATA[<p>copy了K*R《c程序设计语言》里面的实现。<br />
using System;<br />
using System.Collections.Generic;<br />
using System.Text;</p>
<p>namespace LuceneTest<br />
{<br />
    class Test<br />
    {<br />
        static void Main(string[] args)<br />
        {<br />
            int[] array = { 32, 45, 12, 18, 25, 60, 53, 78, 99, 83,21,8,10,33,24,66,80,23,18,95,61 };<br />
            qsort(ref array,0,array.Length-1);<br />
            for (int i = 0; i < array.Length; i++)<br />
            {<br />
                Console.WriteLine(array[i]);<br />
            }<br />
            Console.Read();</p>
<p>        }<br />
        public static void qsort(ref int[] v, int left,int right)<br />
        {<br />
            int i, last;<br />
            if (left >= right) return;<br />
            swap(ref v, left, (left + right) / 2);//交换第一个和中间的一个，为什么取中间的一个，因为可能数组已经排好序了，这样就是最好的情况。这句的主要作用就是选取比较数。<br />
            last = left;//从左边开始一直到右边<br />
            for (i = left + 1; i <= right;i++ )<br />
            {<br />
                if (v[i] < v[left])//拿v[left]做比较数<br />
                    swap(ref v,++last,i);//如果比左边的小则交换位置,last累计交换次数，交换了多少次就说明有多少数比v[left]小。<br />
            }<br />
            swap(ref v,left,last);//交换原来的位置，使得v[last]分别是左右两边的中间数<br />
            qsort(ref v,left,last-1);//往左递归<br />
            qsort(ref v,last+1,right);//往右递归<br />
        }<br />
        public static void swap(ref int[] v,int i,int j)<br />
        {<br />
            int temp;<br />
            temp = v[i];<br />
            v[i] = v[j];<br />
            v[j] = temp;<br />
        }<br />
    }<br />
}</p>
<p>更新（2008年1月27日）：另外写了一个Javascript版本的快速排序，思路和这个一样。地址：<a href="http://panweizeng.com/archives/123">http://panweizeng.com/archives/123</a></p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/archives/91/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
