<?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>Catatan Guru Komputer &#187; ilmu komputer</title>
	<atom:link href="http://educnology.web.id/tag/ilmu-komputer/feed/" rel="self" type="application/rss+xml" />
	<link>http://educnology.web.id</link>
	<description>Lecturer, Researcher, Teacher</description>
	<lastBuildDate>Mon, 26 Mar 2012 14:32:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Algoritma Counting Sort (Pengurutan Data Tanpa Perbandingan)</title>
		<link>http://educnology.web.id/programming/algoritma-counting-sort/</link>
		<comments>http://educnology.web.id/programming/algoritma-counting-sort/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 11:11:16 +0000</pubDate>
		<dc:creator>Sandi Fajar Rodiyansyah</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[algoritma]]></category>
		<category><![CDATA[counting sort]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[ilmu komputer]]></category>
		<category><![CDATA[sorting]]></category>

		<guid isPermaLink="false">http://educnology.web.id/?p=731</guid>
		<description><![CDATA[Program komputer merupakan instruksi-instruksi logis yang tertulis dalam sebuah source code yang dibaca oleh komputer dan selanjutnya dieksekusi. Salah satu masalah yang dapat diselesaikan oleh komputer adalah pengurutan data. Baik pengurutan data dari yang terbesar ke yang terkecil ataupun sebaliknya. &#8230; <a href="http://educnology.web.id/programming/algoritma-counting-sort/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Program komputer merupakan instruksi-instruksi logis yang tertulis dalam sebuah source code yang dibaca oleh komputer dan selanjutnya dieksekusi. Salah satu masalah yang dapat diselesaikan oleh komputer adalah pengurutan data. Baik pengurutan data dari yang terbesar ke yang terkecil ataupun sebaliknya.</p>
<p>Di antara banyak algoritma pengurutan tersebut terdapat satu kategori algoritma pengurutan yang dalam prosesnya tidak melakukan pembandingan antar data. Yang sering disebut  <em>Non-Comparison Sorting Algorithm</em>, atau dalam bahasa IndonesiaAlgoritma Pengurutan-Tanpa-Pembandingan.<span id="more-731"></span></p>
<p>Tulisan ini akan mencoba membahas salah satu teknik sorting yang tanpa melakukan perbandingan data. Ada dua teknik algoritma untuk melakukan sorting tanpa membandingkan data yaitu : <strong><em>Counting Sort </em></strong>dan <strong><em>Radix Sort</em></strong>. Dalam tulisan ini akan dibahas teknik <em><strong>Counting Sort</strong></em>.</p>
<p>Secara umum yang proses yang dilakukan dalam metode ini adalah mengklasifikasikan data sesuai dengan kategori  terurut yang tertentu, dan dalam tiap kategori dilakukan pengklasifikasian lagi, dan seterusnya sesuai dengan kebutuhan, kemudian</p>
<p>subkategori-subkategori tersebut digabungkan kembali, yang secara dilakukan hanya dengan metode sederhana <em>concatenation</em>.</p>
<p>Ide dasar dari <em>counting sort </em>adalah menentukan, untuk setiap elemen <em>x</em> jumlah yang lebih kecil dari <em>x</em> setelah itu informasi ini digunakan untuk menentukan1 posisi <em>x</em>. Contoh sederhana misalkan terdapat 6 elemen yang lebih kecil dari <em>x </em>maka <em>x </em>menjadi posisi ke 7.</p>
<p>Berikut merupakan algoritma <em>counting sort :</em></p>
<pre>algorithm counting_sort (A,k)
Input : A : array [1..n] of integer, k: max (A)
Output : B : array [1..n] of integer
	for i = 1 to k do
           C[i] = 0
	for j = 1 to length(A) do
	   C[A[j]] = C[A[j]] + 1
	for 2 = 1 to k do
	   C[i] = C[i] + C[i-1]
	for j = 1 to length(A) do
	   B[C[A[j]]] = A[j]
	   C[A[j]] = C[A[j]] - 1
        return B</pre>
<p>Setelah dilakukan implementasi algoritma tersebut ke dalam program, dalam hal ini menggunakan JavaScript, berikut merupakan script programnya.</p>

<div class="wp_codebox"><table><tr id="p7312"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</pre></td><td class="code" id="p731code2"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #003366; font-weight: bold;">function</span> countingSort<span style="color: #009900;">&#40;</span>A<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	B<span style="color: #339933;">=</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>C<span style="color: #339933;">=</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> max <span style="color: #339933;">=</span> A<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span>A.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>max<span style="color: #339933;">&lt;</span>A<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
		max<span style="color: #339933;">=</span>A<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #006600; font-style: italic;">//counting</span>
	<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;=</span>max<span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		C<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span>A.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		C<span style="color: #009900;">&#91;</span>A<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">++;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;=</span>max<span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		C<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>C<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>C<span style="color: #009900;">&#91;</span>i<span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span>A.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&gt;=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">--</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		B<span style="color: #009900;">&#91;</span>C<span style="color: #009900;">&#91;</span>A<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>A<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		C<span style="color: #009900;">&#91;</span>A<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>C<span style="color: #009900;">&#91;</span>A<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">return</span> B<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">//test</span>
data<span style="color: #339933;">=</span><span style="color: #009900;">&#91;</span><span style="color: #CC0000;">3</span><span style="color: #339933;">,</span><span style="color: #CC0000;">4</span><span style="color: #339933;">,</span><span style="color: #CC0000;">6</span><span style="color: #339933;">,</span><span style="color: #CC0000;">3</span><span style="color: #339933;">,</span><span style="color: #CC0000;">6</span><span style="color: #339933;">,</span><span style="color: #CC0000;">8</span><span style="color: #339933;">,</span><span style="color: #CC0000;">3</span><span style="color: #339933;">,</span><span style="color: #CC0000;">5</span><span style="color: #339933;">,</span><span style="color: #CC0000;">8</span><span style="color: #339933;">,</span><span style="color: #CC0000;">4</span><span style="color: #339933;">,</span><span style="color: #CC0000;">2</span><span style="color: #339933;">,</span><span style="color: #CC0000;">6</span><span style="color: #339933;">,</span><span style="color: #CC0000;">9</span><span style="color: #339933;">,</span><span style="color: #CC0000;">5</span><span style="color: #339933;">,</span><span style="color: #CC0000;">3</span><span style="color: #339933;">,</span><span style="color: #CC0000;">4</span><span style="color: #339933;">,</span><span style="color: #CC0000;">6</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
document.<span style="color: #000066; font-weight: bold;">write</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;before : &lt;br&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span>data.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	document.<span style="color: #000066; font-weight: bold;">write</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
document.<span style="color: #000066; font-weight: bold;">write</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;&lt;br&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
document.<span style="color: #000066; font-weight: bold;">write</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;after : &lt;br&gt;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
data<span style="color: #339933;">=</span>countingSort<span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span>data.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	document.<span style="color: #000066; font-weight: bold;">write</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>	
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>Dari data random pada array data=[3,4,6,3,6,8,3,5,8,4,2,6,9,5,3,4,6];<br />
 setelah program terebut dijalankan maka data itu menjadi terurut yang dapat terlihat pada gambar dibawah :</p>
<p><a href="http://educnology.web.id/wp-content/uploads/2010/07/urut.png"><img class="aligncenter size-full wp-image-739" title="urut" src="http://educnology.web.id/wp-content/uploads/2010/07/urut.png" alt="" width="210" height="77" /></a></p>
<p>Dengan demikian data yang semula teracak setelah program itu dijalankan maka data akan terurut seperti pada gambar diatas. Namun kekurangan dari algortima ini adalah tidak bisa mengurutkan data string dan data bilangan desimal.</p>
<p>Referensi :</p>
<p>Pengkajian Algoritma Tanpa Perbandingan Counting Sort dan Radix Sort. Oleh : Dominnikus Damas Putranto (Program Studi Teknik Informatika ITB).</p>
<p><a href="http://en.wikipedia.org/wiki/Counting_sort">http://en.wikipedia.org/wiki/Counting_sort</a></p>
<p>Some Sorting Algorithm (Course Material Computer Science UGM). Oleh : Azhari, Drs. MT. Dr. (Magister Ilmu Komputer UGM)</p>
<p><a href="http://users.cs.cf.ac.uk/C.L.Mumford/tristan/CountPage.html">http://users.cs.cf.ac.uk/C.L.Mumford/tristan/CountPage.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://educnology.web.id/programming/algoritma-counting-sort/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

