CSharp out parametresi ile fonksiyon çağırımı

19 Temmuz 2011

Bir metodu void olarak kullanmamıza rağmen metod içindeki bir veya birden fazla değer almak istiyorsak, out veya ref parametresini kullanabiliriz. ref parametresi dediğim, call-by-referance anlamına geliyor. out parametresi de bu parametreye oldukça benziyor.

Ancak ref ve out parametresi arasında farklar var. Şöyle ki :

  1. out parametresi ile gönderilen bir değişkenin değeri metodun içinde kullanılamaz
  2. metod içinde yeni bir değişken yaratılır, fonksiyon sonlanırken referansi metoda gönderilen değişkeninkine atanır
  3. metoda out parametresiyle gönderilen bir değişkene ilk değer atanması zorunlu değildir

Hız? Bellek? Yazının devamı »

Java ile Dinamik Programlama Kullanarak Longest Common Subsequence(LCS) çözümü

7 Haziran 2011

En uzun ortak alt dizi problemi olarak da karşılaşılan longest common subsequence problemini dynamic programming ile nasıl çözüleceğini içeren kodu bu sayfada bulabilirsiniz.

LCS Problemi ne diyenler için : http://en.wikipedia.org/wiki/Longest_common_subsequence_problem

Dinamik Programlama ne diyenler için : http://tolpp.com/dinamik-programlama-dynamic-programming-nedir/

Aşağıdaki Java kodunu indirmek için : http://tolpp.com/algorithms/LCS.java

Yazının devamı »

Dinamik Programlama (Dynamic Programming) nedir?

7 Haziran 2011

Merhaba. Bu yazıda dinamik programlamayı olabildiğince açıklayıcı şekilde anlatmaya çalışacağım.

Dinamik Programlama Nedir?

Dinamik programlama karışık problemlerin daha basit düzeylere indirilerek çözülmesini esas alan bir optimizasyon yöntemidir. Optimizasyondaki amaç, problemdeki kısıtlayıcı koşullar altında bu problemle ilgili en iyi karara varmaktır. Bir problem üzerinde dinamik programlama uygulayabilmek için o problemin alt problemlere parçalanabilir veya bir önceki problemin karakteristiğini koruyacak şekilde çözümü daha kolay başka probleme dönüştürülebilir olması yeterlidir

Yönteme göre optimum çözüm başlangıç durumundan bağımsız olarak diğer çözümler ile çözüm sonuçlarına göre optimum çözümler ardışıklığıdır. Yani, başlangıçta alt problemlerin çözümü bulunup buradan elde edilen verilerle daha büyük alt problemler çözüldüğünde problemin kendisi de çözülmüş olmaktadır. Yazının devamı »

Dynamic Dispatch nedir?

5 Mayıs 2011

Subclass içinde override edilmiş(overload değil!) bir metod çağırıldığında, subclass içindekinin mi yoksa superclass içindekinin mi çağırılacağının run-time sırasında dinamik olarak belirlenmesine Dynamic Dispatch denir.

Hemen bir örnekle :
Yazının devamı »

Selection Sort (Seçmeli Sıralama)

1 Şubat 2011
Seçmeli arama animasyonu

Seçmeli sıralamanın gerçekleşimini gösteren animasyon

Seçmeli arama (selection sort) her bir adım sonunda en küçük değerin en başa getirildiği sıralama algoritmasıdır. Dizi içinde dolaşılarak en küçük değer en başa getirilir. Dizideki eleman sayısı N kadar dolaşma işlemi tekrarlandığında dizi üzerinde sırama ede edilmiş olur.

Performans

Dizimiz üzerinde N tane eleman olsun. Bu durumda N kadar kontrol döngüsü çalıştırılır. Bu döngülerden 1. için N, 2.iin N-1 … N-1. için 2, N.için 1 adet kontrol yapılır. Yani bu sayıları dizi toplamı alırsak N x(N+1)/2 = (N2+N)/2 kontrol yapılmış olur. Bu da worst-case O (n2) karmaşıklık anlamına gelir.

Buradan seçmeli sıralamanın çok performanslı bir sıralama olmadığını görebiliriz. Bu yüzden büyük diziler yerine, minik dizilerde kulanılması daha mantıklı olacaktır. Tercih sebebi ise yazımı çok kolay bil algoritmaya sahip olmasıdır.

Adım-Adım Uygulama

Elimizde  5 1 4 2 8 değerlerine sahip 5 elemanlı bir dizi olsun. Bunu selection sort kullanarak adım adım sıralayalım:
Yazının devamı »


 
Bu sitede Wordpress ve MySQL kullanılmaktadır. Tema : Shlomi Noach, openark.org
Ayrıca site Grikare sunucularında ikamet etmektedir.