Yazan : Şadi Evren ŞEKER Verinin hafızada sıralı tutulması için geliştirilen sıralama algoritmalarından (sorting algorithms) bir tanesidir. Basitçe sıralanacak olan dizideki orta noktada (mean) bulunan bir sayıyı seçerek diğer bütün sayıları bu orta sayıdan büyük veya küçük diye sınıflayarak sıralama yapmayı hedeflemektedir. Bu açıdan bir parçala fethet (divide and conquere) yaklaşımıdır. Ayrıca bu seçilen orta […]
Category: algoritma analizi (teory of algorithms)
Birleştirme Sıralaması (Merge Sort)
Birleştirme Sıralaması (Merge Sort) Yazan : Şadi Evren ŞEKER Verinin hafızada sıralı tutulması için geliştirilen sıralama algoritmalarından (sorting algorithms) bir tanesidir. Basitçe sıralanacak olan diziyi ikişer elemanı kalan parçalara inene kadar sürekli olarak ikiye böler. Sonra bu parçaları kendi içlerinde sıralayarak birleştirir. Sonuçta elde edilen dizi sıralı dizinin kendisidir. Bu açıdan bir parçala fethet […]
Yığınlama Sıralaması (Heap Sort)
Yığınlama Sıralaması (Heap Sort) Yazan : Şadi Evren ŞEKER Verinin hafızada sıralı tutulması için geliştirilen sıralama algoritmalarından (sorting algorithms) bir tanesidir. Yıpınlama sıralaması, arka planda bir yığın ağacı(heap) oluşturur ve bu ağacın en üstündeki sayıyı alarak sıralama işlemi yapar. (Lütfen yığın ağacındaki en büyük sayının her zaman en üstte duracağını hatırlayınız. ) Sıralanmak istenen verimiz: […]
Yığın Ağacı (Heap)
Yığın Ağacı (Heap) Yazan : Şadi Evren ŞEKER Yığın ağacı bilgisayar bilimlerinde özellikle sıralama amacıyla çokca kullanılan bir veri yapısıdır. Bu veri yapısı üst düğümün (atasının) alt düğümlerden (çocuklarından) her zaman büyük olduğu bir ikili ağaç (binary tree) şeklinde düşünülebilir. Aşağıda örnek bir yığın ağacı verilmiştir: Yukarıdaki ikili ağaçta dikkat edilirse ağaç dengeli bir şekilde […]
Dizi üzerinde ağaç kodlaması
Yazan: Şadi Evren ŞEKER Ağaçlar bilindiği üzere gösterici kullanan veri yapılarıdır. Ancak verinin dizi(array) üzerinde saklanması durumunda ağacın bu gösterici özelliğinin kullanılması ne yazık ki mümkün olamamaktadır. Bunun yerine dizinin indis numaralarını kullanan bir matematiksel fonksiyon ile benzer bir yapı elde edilebilir. Yukarıda verilen ikili ağacı ve her düğümün köşesinde yazan düğüm numarasını dikkate alırsak […]
Sayarak Sıralama (Counting Sort)
Sayarak Sıralama (Counting Sort) Yazan : Şadi Evren ŞEKER Verinin hafızada sıralı tutulması için geliştirilen sıralama algoritmalarından (sorting algorithms) bir tanesidir. Basitçe sıralanacak olan dizideki her sayının kaç tane olduğunu farklı bir dizide sayar. Daha sonra bu sayıların bulunduğu dizinin üzerinde bir işlemle sıralanmış olan diziyi elde eder. Sıralanmak istenen verimiz: 5,7,2,9,6,1,3,7 olsun. Bu […]
Kabarcık Sıralaması (Baloncuk sıralaması, Bubble Sort)
Yazan : Şadi Evren ŞEKER Verinin hafızada sıralı tutulması için geliştirilen sıralama algoritmalarından (sorting algorithms) bir tanesidir. Basitçe ardışık duran iki hafıza bloğunun birbirine nispetle sıralanması ve bu işlemin sürekli tekrarlanması sayesinde sıralar. Ardışık iki hafıza bloğuna bakmasından dolayı baloncuk ismini almıştır. Çünkü bu bakma işlemi bir baloncuğun (buble) hareket etmesi gibi sayıların üzerinde hareket […]
Matris Mod (Masfuf Hali,Matrix Mod)
Yazan : Şadi Evren ŞEKER Bir matriksin modulosunu alma işlemidir. Basitçe bir dizide bulunan sayılardan en fazla tekrarlı olanını döndürür. Şayet sayılardan hiçbirisi tekrar etmiyorsa o zaman bu matriksin mod’u yoktur. Şayet aynı sayıda tekrar eden iki farklı sayı bulunuyorsa o zaman matriksin mod’u bu sayıların tamamını içeren bir dizidir. Örnekler: int[] a = {4,5,7,3,2,5,6,8} […]
Hamming Mesafesi (Hamming Distance)
Yazan : Şadi Evren ŞEKER Hamming mesafesi bilgisayar bilimlerinde aynı uzunluktaki iki dizgi (string) arasında, birbirine dönüşmesi için gerekli olan yer değiştirme sayısını verir. Yani basitçe bir dizginin diğer dizgiden ne kadar farklı olduğunu gösterir. Örneğin aşağıda bazı dizgiler arasındaki hamming mesafesi verilmiştir: 100011101 100101101 = 2 düğün düşün = 1 Bu durum bir küp […]
Fibonacci Arama Algoritması (Fibonacci Search Algorithm)
Yazan : Şadi Evren ŞEKER Bu arama algoritması, özyineli (recursive) bir seri olan fibonacci sayılarını kullanarak sıralı bir dizi üzerinde arama yapmaktadır. Çalışma mantığı arama yapılacak olan sıralı diziyi fibonacci sayılarını kullanarak parçalara bölmektir. Örneğin arama yapılacak olan alanın en fazla 2147483647 değerine sahip olabildiği integer alan olsun. Bu durumda bu sayıya ulaşana kadar olan […]