<?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>#raynix# &#187; 算法</title>
	<atom:link href="http://raynix.info/archives/tag/%e7%ae%97%e6%b3%95/feed" rel="self" type="application/rss+xml" />
	<link>http://raynix.info</link>
	<description>If we can't live together, we gonna die alone.</description>
	<lastBuildDate>Sat, 04 Sep 2010 07:51:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>从6.7到0.01</title>
		<link>http://raynix.info/archives/507</link>
		<comments>http://raynix.info/archives/507#comments</comments>
		<pubDate>Mon, 20 Apr 2009 09:21:36 +0000</pubDate>
		<dc:creator>raynix</dc:creator>
				<category><![CDATA[Opensource]]></category>
		<category><![CDATA[Python & Django]]></category>
		<category><![CDATA[算法]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://raynix.cn/?p=507</guid>
		<description><![CDATA[编程果然不能偷懒！我这一偷懒，CPU就不知道要受多少累、冒多少热气了。一开始，我采用了很无脑的穷举方法，复杂度是O(n**2)，结果肯定正确的，但是长度一万的数组就可以耗去6.7秒的CPU时间。 raymond@raymond-laptop:~/_Work/Dev/python$ python le.py time:  0:00:06.708924 return:  1 0 0 0 之后，在高手提示下将复杂度降低到n (log n + 1) ，结果不错了。 raymond@raymond-laptop:~/_Work/Dev/python$ python le.py time:  0:00:00.010430 return:  1 0 0 0 对应改进后的代码： def leader3(array): t = len(array) //2 array.sort() p = -1 c = 1 for i in array: if p == i : c+=1 if c &#62; t: [...]]]></description>
			<content:encoded><![CDATA[<p>编程果然不能偷懒！我这一偷懒，CPU就不知道要受多少累、冒多少热气了。一开始，我采用了很无脑的穷举方法，复杂度是O(n**2)，结果肯定正确的，但是长度一万的数组就可以耗去6.7秒的CPU时间。</p>
<blockquote><p>raymond@raymond-laptop:~/_Work/Dev/python$ python le.py<br />
time:  <strong>0:00:06.708924</strong><br />
return:  1 0 0 0</p></blockquote>
<p>之后，在高手提示下将复杂度降低到n (log n + 1) ，结果不错了。</p>
<blockquote><p>raymond@raymond-laptop:~/_Work/Dev/python$ python le.py<br />
time:  <strong>0:00:00.010430</strong><br />
return:  1 0 0 0</p></blockquote>
<p>对应改进后的代码：</p>
<pre>def leader3(array):
	t = len(array) //2
	array.sort()
	p = -1
	c = 1
	for i in array:
		if p == i :
			c+=1
			if c &gt; t:
				return 1
		else :
			p = i
			c = 1
		#print i, p, c

	return 0</pre>
<p>这是我要记住的一课。</p>
<hr />
<p><small>© raynix for <a href="http://raynix.info">#raynix#</a>, 2009. |
<a href="http://raynix.info/archives/507">Permalink</a> |
<a href="http://raynix.info/archives/507#comments">唉, 一个评论都没</a> |
Add to
<a href="http://del.icio.us/post?url=http://raynix.info/archives/507&title=从6.7到0.01">del.icio.us</a>
<br/>
Post tags: <a href="http://raynix.info/archives/tag/%e7%ae%97%e6%b3%95" rel="tag">算法</a>, <a href="http://raynix.info/archives/tag/python" rel="tag">Python</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://raynix.info/archives/507/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>偷闲，写了个初级二叉树排序</title>
		<link>http://raynix.info/archives/495</link>
		<comments>http://raynix.info/archives/495#comments</comments>
		<pubDate>Tue, 14 Apr 2009 07:32:25 +0000</pubDate>
		<dc:creator>raynix</dc:creator>
				<category><![CDATA[Python & Django]]></category>
		<category><![CDATA[算法]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://raynix.cn/?p=495</guid>
		<description><![CDATA[二叉树是计算机算法中普遍采用的数据结构。在所有排序算法中具有高效率的二叉树排序就是基于此结构。我抽空用新学的Python写了一个试试： class node: left = None right = None value = 0 def __init__(self, v): self.value = v def walk(self): r = [] if self.left: r.extend(self.left.walk()) r.append(self.value) if self.right: r.extend(self.right.walk()) return r def insert(self, n): if self.value &#60; n: if self.right: self.right.insert(n) else: self.right = node(n) else: if self.left: self.left.insert(n) else: self.left = node(n) if [...]]]></description>
			<content:encoded><![CDATA[<p>二叉树是计算机算法中普遍采用的数据结构。在<a href="http://en.wikipedia.org/wiki/Sort_algorithm" target="_blank">所有排序算法</a>中具有高效率的<a href="http://blog.csdn.net/andylin02/archive/2008/01/27/2068596.aspx" target="_blank">二叉树排序</a>就是基于此结构。我抽空用新学的Python写了一个试试：</p>
<pre>class node:
	left = None
	right = None
	value = 0

	def __init__(self, v):
		self.value = v

	def walk(self):
		r = []
		if self.left:
			r.extend(self.left.walk())
		r.append(self.value)
		if self.right:
			r.extend(self.right.walk())
		return r

	def insert(self, n):
		if self.value &lt; n:
			if self.right:
				self.right.insert(n)
			else:
				self.right = node(n)
		else:
			if self.left:
				self.left.insert(n)
			else:
				self.left = node(n)

if __name__ == '__main__':
    s = [21,545,65,33,1,2324,232,42]
    p = node(s[0])
    for i in s[1:]:
	    p.insert(i)
    print p.walk()</pre>
<p>运行结果</p>
<blockquote><p>python bi-tree.py<br />
[1, 21, 33, 42, 65, 232, 545, 2324]</p></blockquote>
<p>结论：一次编写，基本正确。python很合我的路子啊。</p>
<p>BTW 用&lt;pre&gt;贴python code很正点:)</p>
<hr />
<p><small>© raynix for <a href="http://raynix.info">#raynix#</a>, 2009. |
<a href="http://raynix.info/archives/495">Permalink</a> |
<a href="http://raynix.info/archives/495#comments">2 条评论</a> |
Add to
<a href="http://del.icio.us/post?url=http://raynix.info/archives/495&title=偷闲，写了个初级二叉树排序">del.icio.us</a>
<br/>
Post tags: <a href="http://raynix.info/archives/tag/%e7%ae%97%e6%b3%95" rel="tag">算法</a>, <a href="http://raynix.info/archives/tag/python" rel="tag">Python</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://raynix.info/archives/495/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
