<?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>F. Oğuz ÖZKEROĞLU &#187; algorithm</title>
	<atom:link href="http://www.oguzozkeroglu.com/tag/algorithm/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.oguzozkeroglu.com</link>
	<description>Web günlüğü</description>
	<lastBuildDate>Wed, 01 Feb 2012 06:06:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Kuyruk Veri Yapısı &#8211; [Java]</title>
		<link>http://www.oguzozkeroglu.com/kuyruk-veri-yapisi-java/</link>
		<comments>http://www.oguzozkeroglu.com/kuyruk-veri-yapisi-java/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 11:27:34 +0000</pubDate>
		<dc:creator>Oguz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[algoritma]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[data structure]]></category>
		<category><![CDATA[insert]]></category>
		<category><![CDATA[kuyruk]]></category>
		<category><![CDATA[queue]]></category>
		<category><![CDATA[remove]]></category>
		<category><![CDATA[veri yapısı]]></category>

		<guid isPermaLink="false">http://www.oguzozkeroglu.com/?p=250</guid>
		<description><![CDATA[Veri yapıları dersinin önemli elemanlarından biri olan kuyruk (queue) yapısını Java ile oluşturmaya çalıştım. Kodlar biraz amatörce oldu ama çalışıyor :) Peki nedir bu kuyruk? Wiki şöyle diyor FIFO (First In Fist Out &#8211; İlk Giren İlk Çıkar) mantığına dayalı kuyruk yapısı ile ilgili yazdığım class: yukarıdaki gibidir.]]></description>
			<content:encoded><![CDATA[<p>Veri yapıları dersinin önemli elemanlarından biri olan kuyruk (queue) yapısını Java ile oluşturmaya çalıştım. Kodlar biraz amatörce oldu ama çalışıyor :)</p>
<p>Peki nedir bu kuyruk? Wiki <a href="http://en.wikipedia.org/wiki/Queue_%28data_structure%29">şöyle</a> diyor</p>
<p>FIFO (First In Fist Out &#8211; İlk Giren İlk Çıkar) mantığına dayalı kuyruk yapısı ile ilgili yazdığım class: </p>
<pre class="brush: java; title: ; notranslate">
public class kuyruk {
	// private değişkenler
	private int maxBoyut;
	private long[] kuyrukDizi;
	private int front;
	private int rear;
	private int elemanSayisi;

	// constructor
	// kuyruk degisken_ismi = new kuyruk (eleman_sayisi);
	public kuyruk (int boyut){
		maxBoyut = boyut;
		kuyrukDizi = new long [maxBoyut];
		front = 0;
	    rear = -1;
	    elemanSayisi = 0;
	}

	// metodlar

	// kuyruk boş mu?
	public boolean bosMu() {
		if (elemanSayisi == 0) return true;
		else return false;
	}

	// kuyruk dolu mu?
	public boolean doluMu() {
		if (elemanSayisi == maxBoyut) return true;
		else return false;
	}

	// kuyruğa eleman ekleme
	public void insert (long eklenecekEleman){
		if (rear == maxBoyut -1) rear = -1;
		rear++;
		kuyrukDizi [rear] = eklenecekEleman;
		elemanSayisi++;
	}

	// kuyruktan eleman çekme
	public long remove(){
		long cikarilacak = kuyrukDizi [front++];
		if (front == maxBoyut) front = 0;
		elemanSayisi--;
		return cikarilacak;
	}

	// kuyruğun sonundaki eleman
	public long kuyrukNerde() {
		return kuyrukDizi[front];
	}

	// kuyruğun boyutu
	public int kuyrukBoyutu() {
		return elemanSayisi;
	}
}
</pre>
<p>yukarıdaki gibidir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oguzozkeroglu.com/kuyruk-veri-yapisi-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sıralama Algoritmaları [2] : Bubble Sort</title>
		<link>http://www.oguzozkeroglu.com/siralama-algoritmalari-2-bubble-sort/</link>
		<comments>http://www.oguzozkeroglu.com/siralama-algoritmalari-2-bubble-sort/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 13:01:37 +0000</pubDate>
		<dc:creator>Oguz</dc:creator>
				<category><![CDATA[algoritmalar]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[algoritma]]></category>
		<category><![CDATA[bubble sort]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[cplusplus]]></category>
		<category><![CDATA[kabarcık sıralaması]]></category>
		<category><![CDATA[sıralama algoritması]]></category>
		<category><![CDATA[sorting algorithm]]></category>

		<guid isPermaLink="false">http://www.oguzozkeroglu.com/?p=222</guid>
		<description><![CDATA[Daha önceki yazılarımdan birinde(Selection Sort) sıralama algoritmalarına küçük bir giriş yapmıştım. Bu yazı da onun devamı niteliğinde olacak ama açıklama için yine işi daha iyi birilerine (Wiki) bırakacağım. Bubble sort için C/C++ ve Java&#8217;da yazdığım kodları yazmam yeterli olur sanırım. Bu arada Java&#8217;da yazdığım kod sayısı 100 satırı geçti bunlarla birlikte :P &#8220;Hello World&#8221; un [...]]]></description>
			<content:encoded><![CDATA[<p>Daha önceki yazılarımdan birinde(<a title="Selection Sort" href="http://www.oguzozkeroglu.com/siralama-algoritmalari-1-selection-sort/" target="_blank">Selection Sort</a>) sıralama algoritmalarına küçük bir giriş yapmıştım. Bu yazı da onun devamı niteliğinde olacak ama açıklama için yine işi daha iyi birilerine (<a title="Bubble Sort" href="http://en.wikipedia.org/wiki/Bubble_sort" target="_blank">Wiki</a>) bırakacağım. Bubble sort için C/C++ ve Java&#8217;da yazdığım kodları yazmam yeterli olur sanırım.</p>
<p>Bu arada Java&#8217;da yazdığım kod sayısı 100 satırı geçti bunlarla birlikte :P &#8220;Hello World&#8221; un üstüne bayağı şey yapmışım demek ki :)</p>
<p>C/C++ Kodu :</p>
<pre class="brush: cpp; title: ; notranslate">
void bubbleSort(int dizi[], int elemanSayisi)
{
     int temp;
     int i, j;

     for (i=1; i&lt;elemanSayisi; i++)
     {
         for (j=0; j&lt;elemanSayisi-i; j++)
         {
             if(dizi[j] &gt; dizi[j+1])
             {
                        temp = dizi [j];
                        dizi [j] = dizi [j+1];
                        dizi [j+1] = temp;
             }
         }
     }
}
</pre>
<p>Java Kodu :</p>
<pre class="brush: java; title: ; notranslate">
    public static void BubbleSort(int [] dizi)
    {
        int temp;   // Yer değiştirmede kullanılacak geçici değişken
        for (int i=1; i&lt;dizi.length; i++)
        {
            for(int j=0; j&lt;dizi.length-i; j++)
            {
                if (dizi[j] &gt; dizi [j+1])
                {
                    temp = dizi [j];
                    dizi [j] = dizi [j+1];
                    dizi [j+1] = temp;
                }//Önce gelen elaman bir sonrakinden büyükse ikisi yer değiştiriyor
            }// Dizinin ardışık elamanlarını karşılaştırmak için kullandığımız döngü
        }// Her karşılaştırmadan sonra yeniden kaldığımız yerden devam etmemizi sağlayan döngü
    }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.oguzozkeroglu.com/siralama-algoritmalari-2-bubble-sort/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Sıralama Algoritmaları [1] : Selection Sort</title>
		<link>http://www.oguzozkeroglu.com/siralama-algoritmalari-1-selection-sort/</link>
		<comments>http://www.oguzozkeroglu.com/siralama-algoritmalari-1-selection-sort/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 23:24:03 +0000</pubDate>
		<dc:creator>Oguz</dc:creator>
				<category><![CDATA[algoritmalar]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[algoritma]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[cplusplus]]></category>
		<category><![CDATA[seçmeli sıralama]]></category>
		<category><![CDATA[selection]]></category>
		<category><![CDATA[selection sort]]></category>
		<category><![CDATA[sıralama]]></category>
		<category><![CDATA[sıralama algoritması]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[sorting]]></category>
		<category><![CDATA[sorting algorithm]]></category>

		<guid isPermaLink="false">http://www.oguzozkeroglu.com/?p=164</guid>
		<description><![CDATA[Bilgisayar ortamında verilerin sıralı olması birçok işi kolaylaştırır. Arama, ekleme, bölme vs. durumlarında verilerin sıralı olması ile olmaması arasında çok büyük performans farkı olabilir. Birçok algoritma (örneğin binary search) sıralı veriler üzerinde çalışır. Kullanıcı için de verilerin sıralı olması büyük kolaylık sağlar. Verilerin sıralanması için birçok algortima geliştirilmiştir. * Selection Sort * Bubble sort * [...]]]></description>
			<content:encoded><![CDATA[<p>Bilgisayar ortamında verilerin sıralı olması birçok işi kolaylaştırır. Arama, ekleme, bölme vs. durumlarında verilerin sıralı olması ile olmaması arasında çok büyük performans farkı olabilir.<br />
Birçok algoritma (örneğin binary search) sıralı veriler üzerinde çalışır. Kullanıcı için de verilerin sıralı olması büyük kolaylık sağlar.<br />
Verilerin sıralanması için birçok algortima geliştirilmiştir.</p>
<p>* Selection Sort<br />
* Bubble sort<br />
* Insertion sort<br />
* Shell sort<br />
* Merge sort<br />
* Heapsort<br />
* Quicksort<br />
* Bucket sort<br />
* Radix sort<br />
* Distribution sort<br />
* Shuffle sort<br />
&#8230;</p>
<p>Listeyi uzatmak mümkün. Sıralanacak veririn boyutu, yazılacak kod maliyeti, sistem kaynakları, kullanıcı tercihi vb. durumlara göre herhangi biri tercih edilebilir.<br />
Bunlardan Selection Sort&#8217;u inceleyelim. Sayı dizisini kullaracak olursak, algoritma ilk adımda tüm diziyi dolaşacak, en küçük elemanı bulup ilk sıraya yazacak.<br />
Sonra dizinin kalan kısmında aynı işi yeniden yapacak. Kalan kısmı tarayıp en küçük elamanı bulup, ikinci sıraya yazacak. Bu şekilde son elemana kadar gidip en küçükten büyüğe doğru dizimiz sıralanmış olacak.</p>
<p>Viki&#8217;de aşağıdaki animasyonu buldum, Selection Sort için hazırlanmış basit bi şey.</p>
<p style="text-align: center;">
<p><img class="size-full wp-image-166 aligncenter" title="Selection Sort" src="http://www.oguzozkeroglu.com/wp-content/uploads/2009/03/selection-sort1.gif" alt="Selection Sort" width="288" height="288" /></p>
<p>Fonksiyon için de C ve Java&#8217;da aşağıdaki kodları yazdım. Aynı işi yapan benzer şeyler de yazılabilir.</p>
<p>C/C++ kodu :</p>
<pre class="brush: cpp; title: ; notranslate">
void selectionSort (int dizi[], int elemanSayisi)
{
     int i, j, enKucuk, temp;
     for (i=0; i&lt;elemanSayisi-1; i++)
     {
         enKucuk = i;
         for (j=i+1; j&lt;elemanSayisi; j++)
         {
             if (dizi[j] &lt; dizi [enKucuk])
             enKucuk = j;
         }
         temp = dizi[i];
         dizi[i] = dizi[enKucuk];
         dizi[enKucuk] = temp;
     }
}
</pre>
<p>Java kodu :</p>
<pre class="brush: java; title: ; notranslate">
    private static void selectionSort(int [] dizi,int n)
    {
        int temp;
        int enKucuk;
        for(int i=0; i&lt;n-1; i++)
        {
            enKucuk=i;
            for(int j=i; j&lt;n; j++)
            {
                if (dizi[j] &lt; dizi[enKucuk]) enKucuk=j;
            }
            temp=dizi[i];
            dizi[i]=dizi[enKucuk];
            dizi[enKucuk]=temp;
        }
    }
</pre>
<p style="text-align: left;">Fonksiyon argüman olarak aldığı diziyi Selection Sort algoritması ile sıralıyor.</p>
<p>İç içe iki tane döngü kullanıldığı için algoritmanın karmaşıklığı O(n²) olur. Küçük boyutlu dizilerde fazla kod yazmaya gerek kalmadan kullanılabilecek bir algoritmadır.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oguzozkeroglu.com/siralama-algoritmalari-1-selection-sort/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

