Medyan(diğer adıyla ortanca) istatiksel hesaplamalarda aritmetik ortalama işleminin alternatifi olarak sıkça kullanılan ve bir sayı dizisinin küçükten büyüğe sıralandığında ortada kalan değeri sonuç olarak döndüren işlemdir.
Bu makalemizde C# programlama dilinde medyan hesaplama algoritmasını yazmaya çalışacağız. Medyan (Ortanca) ile ilgili ayrıntılı bili almak isterseniz buradaki makaleye göz atmanızı tavsiye ederim.
Bir algoritmayı yazmadan önce problemi tam olarak ortaya koymak ve bu problemin çözüm yöntemini tüm yönleriyle ele almak önemlidir. Medyan hesaplama algoritmasını yazabilmek için de yapmamız gereken adımları sayı dizisini sıralamak, sıralama işleminden sonra ortanca değeri bulmak ve eğer iki ortanca değeri varsa bunun aritmetik ortalamasını bulmak olacaktır.
Konuyu anlatabilmek açısından öncelikle kodları paylaşıp bundan sonra konunun açıklamasını yapacağım.
public double CalculateMedian(List<double> numberList)
{
double median = 0;
var orderedList = numberList.OrderBy(t => t).ToList();
if (numberList.Count % 2 == 1)
{
median = orderedList[(numberList.Count + 1) / 2 - 1];
}
else
{
median = (orderedList[(numberList.Count) / 2-1] + orderedList[((numberList.Count) / 2)]) / 2;
}
return median;
}
Sayı türleri olarak double türünde değerler ve fonksiyonun geri döndürdüğü değer tipi de double seçilmiştir. Bunun nedeni ise sayı dizisinin uzunluğunun çift olması durumunda ortalamanın alınacak olmasıdır. Giriş dizisinin hangi veri türünde olacağını seçmek size kalmış durumda.
İkinci aşama ise sayı dizisini sıralama işlemidir. Sıralama işlemi için Linq To Sql tarafından sağalanan OrderBy metodu kullanılmıştır. İsterseniz bu kısımda kendi sıralama algoritmanızı yazabilirsiniz. Kendinizi geliştirmek istiyorsanız da mutlaka yazmanızı öneririm.
Algoritmanın üçüncü aşaması ise medyan değerinin yer aldığı sıralanmış dizideki elamanı belirleyip sonuca yazmaktan ibarettir. Burada tek sayılı dizi uzunluğu için ortada kalan eleman sonuç olarak döndürülürken, çift olması durumunda ortada kalan iki elemanın Aritmetik ortalaması sonuç olarak döndürülmektedir.
Son olarak konuyu özetleyecek olursak: bu makalemizde C# programlama dilinde matematik ve istatistik bilimlerinde çokça kullanılan medyan (ortanca) değerinin hesaplama algoritmasını yazmaya çalıştık.
Algoritma içinde eksikler varsa veya geliştirilmesi gerektiğini düşündüğünüz yerler varsa yorumlar kısmından bunları belirtebilirsiniz.
Umarım makalem faydalı olmuştur.
Yorumlar
Yorum Gönder