<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Mergesort and Quicksort with Dynamic Languages</title>
	<atom:link href="http://javazquez.com/juan/2009/01/03/mergesort-and-quicksort-with-dynamic-languages/feed/" rel="self" type="application/rss+xml" />
	<link>http://javazquez.com/juan/2009/01/03/mergesort-and-quicksort-with-dynamic-languages/</link>
	<description>Juan A. Vazquez</description>
	<lastBuildDate>Wed, 12 Jan 2011 14:20:13 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: cazacugmihai</title>
		<link>http://javazquez.com/juan/2009/01/03/mergesort-and-quicksort-with-dynamic-languages/comment-page-1/#comment-525</link>
		<dc:creator>cazacugmihai</dc:creator>
		<pubDate>Thu, 21 May 2009 07:15:33 +0000</pubDate>
		<guid isPermaLink="false">http://javazquez.com/juan/?p=64#comment-525</guid>
		<description>-------GROOVY QUICKSORT--------------

def quickSort(List lst) {
    if (lst.size() &lt;= 1) return lst
    def (less, greater) = [[], []]
    def pivot = lst.remove(new Random().nextInt(lst.size()))
    lst.each {
        if (it &lt; pivot) less &lt;&lt; it
        else greater &lt;&lt; it
    }
    quickSort(less) + pivot + quickSort(greater)
}

Instead of random parameter you can use (list.size() / 2)</description>
		<content:encoded><![CDATA[<p>&#8212;&#8212;-GROOVY QUICKSORT&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>def quickSort(List lst) {<br />
    if (lst.size() &lt;= 1) return lst<br />
    def (less, greater) = [[], []]<br />
    def pivot = lst.remove(new Random().nextInt(lst.size()))<br />
    lst.each {<br />
        if (it &lt; pivot) less &lt;&lt; it<br />
        else greater &lt;&lt; it<br />
    }<br />
    quickSort(less) + pivot + quickSort(greater)<br />
}</p>
<p>Instead of random parameter you can use (list.size() / 2)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vincedel</title>
		<link>http://javazquez.com/juan/2009/01/03/mergesort-and-quicksort-with-dynamic-languages/comment-page-1/#comment-517</link>
		<dc:creator>Vincedel</dc:creator>
		<pubDate>Wed, 15 Apr 2009 18:07:20 +0000</pubDate>
		<guid isPermaLink="false">http://javazquez.com/juan/?p=64#comment-517</guid>
		<description>Hey, cool tips. Perhaps I&#039;ll buy a bottle of beer to that person from that forum who told me to visit your blog :)</description>
		<content:encoded><![CDATA[<p>Hey, cool tips. Perhaps I&#8217;ll buy a bottle of beer to that person from that forum who told me to visit your blog <img src='http://javazquez.com/juan/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: admin</title>
		<link>http://javazquez.com/juan/2009/01/03/mergesort-and-quicksort-with-dynamic-languages/comment-page-1/#comment-482</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Mon, 23 Mar 2009 16:18:57 +0000</pubDate>
		<guid isPermaLink="false">http://javazquez.com/juan/?p=64#comment-482</guid>
		<description>Thanks for the submission  George :D</description>
		<content:encoded><![CDATA[<p>Thanks for the submission  George <img src='http://javazquez.com/juan/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vortex7</title>
		<link>http://javazquez.com/juan/2009/01/03/mergesort-and-quicksort-with-dynamic-languages/comment-page-1/#comment-477</link>
		<dc:creator>vortex7</dc:creator>
		<pubDate>Sun, 22 Mar 2009 23:50:56 +0000</pubDate>
		<guid isPermaLink="false">http://javazquez.com/juan/?p=64#comment-477</guid>
		<description>This is a working and clear groovy mergsort
def ms(lst){
&#160;&#160;def sz=lst.size()
&#160;&#160;if(sz &lt;= 1)
&#160;&#160;&#160;&#160;return lst

&#160;&#160;def half = (int)(sz/2)
&#160;&#160;def lft = ms(lst[0..&lt;half])
&#160;&#160;def rht = ms(lst[half..sz-1])
&#160;&#160;def rcnt = 0
&#160;&#160;def rlen = sz -half
&#160;&#160;def result =[]
&#160;&#160;lft.each {lf-&gt;
&#160;&#160;&#160;&#160;while (rcnt &lt; rlen &amp;&amp; rht[rcnt] &lt;= lf)
&#160;&#160;&#160;&#160;&#160;&#160;result += rht[rcnt++]
&#160;&#160;&#160;&#160;result += lf
&#160;&#160;}
&#160;&#160;while (rcnt &lt; rlen)
&#160;&#160;&#160;&#160;result += rht[rcnt++]
&#160;&#160;return result
}

sl=[3,88,5,3,2,1,-2,2]
println ms(sl)</description>
		<content:encoded><![CDATA[<p>This is a working and clear groovy mergsort<br />
def ms(lst){<br />
&nbsp;&nbsp;def sz=lst.size()<br />
&nbsp;&nbsp;if(sz &lt;= 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;return lst</p>
<p>&nbsp;&nbsp;def half = (int)(sz/2)<br />
&nbsp;&nbsp;def lft = ms(lst[0..&lt;half])<br />
&nbsp;&nbsp;def rht = ms(lst[half..sz-1])<br />
&nbsp;&nbsp;def rcnt = 0<br />
&nbsp;&nbsp;def rlen = sz -half<br />
&nbsp;&nbsp;def result =[]<br />
&nbsp;&nbsp;lft.each {lf-&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;while (rcnt &lt; rlen &amp;&amp; rht[rcnt] &lt;= lf)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result += rht[rcnt++]<br />
&nbsp;&nbsp;&nbsp;&nbsp;result += lf<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;while (rcnt &lt; rlen)<br />
&nbsp;&nbsp;&nbsp;&nbsp;result += rht[rcnt++]<br />
&nbsp;&nbsp;return result<br />
}</p>
<p>sl=[3,88,5,3,2,1,-2,2]<br />
println ms(sl)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

