<?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>JugglerShu.Net &#187; HeapSort</title>
	<atom:link href="http://programming.jugglershu.net/wp/?cat=101&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://programming.jugglershu.net/wp</link>
	<description>Nothing But Programming</description>
	<lastBuildDate>Wed, 15 Apr 2020 08:11:15 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>HeapSort (C++ Template関数実装)</title>
		<link>http://programming.jugglershu.net/wp/?p=550</link>
		<comments>http://programming.jugglershu.net/wp/?p=550#comments</comments>
		<pubDate>Tue, 16 Aug 2011 16:42:00 +0000</pubDate>
		<dc:creator><![CDATA[shu]]></dc:creator>
				<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[HeapSort]]></category>

		<guid isPermaLink="false">http://programming.jugglershu.net/wp/?p=550</guid>
		<description><![CDATA[久しぶりに、プログラミング。今日はいままで自分で書いたことなかったヒープソート。 &#60;code&#62; &#60;br&#62;#ifndef __HEAPSORT_H__ &#60;br&#62;#define __HEAPSORT_H__ &#60;br&#62;&#60;br&#62;template &#60;typename t&#62;&#60;br&#62;void MaxHeapify( T* tar <a class="more-link" href="http://programming.jugglershu.net/wp/?p=550">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>久しぶりに、プログラミング。<br />今日はいままで自分で書いたことなかったヒープソート。</p>
<pre>&lt;code&gt;
&lt;br&gt;#ifndef __HEAPSORT_H__
&lt;br&gt;#define __HEAPSORT_H__
&lt;br&gt;&lt;br&gt;template &lt;typename t&gt;&lt;br&gt;void MaxHeapify( T* target, unsigned int index , unsigned int length) {
&lt;br&gt;	unsigned int l = index	unsigned int r = (index	unsigned int max = index;
&lt;br&gt;	if( l 		max = l;
&lt;br&gt;	}
&lt;br&gt;	if( r 		max = r;
&lt;br&gt;	}
&lt;br&gt;	if( index != max ){
&lt;br&gt;		T tmp = target[index];
&lt;br&gt;		target[index] = target[max];
&lt;br&gt;		target[max] = tmp;
&lt;br&gt;		MaxHeapify( target, max, length );	
&lt;br&gt;	}
&lt;br&gt;&lt;br&gt;	return;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;template &lt;typename t&gt;&lt;br&gt;void BuildMaxHeap( T* target, unsigned int length ){
&lt;br&gt;	for( unsigned int i = (length-1)/2; true ; i-- ){
&lt;br&gt;		MaxHeapify( target, i, length );
&lt;br&gt;		if( 0 == i ){
&lt;br&gt;			break;
&lt;br&gt;		}
&lt;br&gt;	}
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;template &lt;typename t&gt;&lt;br&gt;void HeapSort( T* target, unsigned int length){
&lt;br&gt;	BuildMaxHeap( target , length );
&lt;br&gt;	while(length != 0 ){
&lt;br&gt;		T tmp = target[length-1]; 
&lt;br&gt;		target[length-1] = target[0];
&lt;br&gt;		target[0] = tmp;
&lt;br&gt;		length--;
&lt;br&gt;		MaxHeapify(target, 0, length );
&lt;br&gt;	}
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/typename&gt;&lt;/typename&gt;&lt;/typename&gt;&lt;/code&gt;</pre>
<p>includeしてから次ように使う。</p>
<pre>&lt;code&gt;
&lt;br&gt;unsigned char buf[] = {5,7,10,8,11};
&lt;br&gt;HeapSort( buf, 5 );
&lt;br&gt;//ここでbuf内はソート済み。
&lt;br&gt;&lt;/code&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://programming.jugglershu.net/wp/?feed=rss2&#038;p=550</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
