Bu sayfadaki yazılar
Sayfanın metni
Sayfa 10
Diyelim ki ayrı insanlara sık sık mektup, broşür vb. göndermek durumundasınız. Bu yüzden adres defterinizi bilgisayara girmek istiyorsunuz. Ya da bir araştırmacısınız; bir kaynakça hazırlamak istiyorsunuz, ya da bilgisayarınızda yabancı dil öğrenirken başvuracağınız bir sözlük yaratmak istiyorsunuz. Ne yapacaksınız? Bilgilerin rastgele bir sıra içerisinde makineye girilmesi sorun değil. Ancak rastgele girilmiş bilgilere düzenli bir biçimde erişilmesi gerekir. Bunu nasıl mı sağlayacaksınız? Buyurun size Sıra Sıra Sıralamalar.
Sıralamanın sıkça başvurulan bir bilgi işlem uygulaması olduğunu biliyoruz. Bir dosyanın aramalara yanıt verebilmesi ya da en azından eli yüzü düzgün basılı örnekler (print-out) elde edebilmesi için, fiziksel durumundan (bilginin sıra gözetilmeksizin girilmesi gibi) kurtarılarak mantıksal bir düzene sokulması, yani sıralanması gerekmektedir. En sık başvurulan sıralama yöntemlerinin alfabetik yöntemler olduklarını görüyoruz. Peki karşımıza çıkacak özel bir durumda hangi sıralamayı kullanacağımıza nasıl karar vereceğiz? Aşağıdaki satırlarda birkaç harfsayısal (alfanumerik) sıralama yönteminin kısa çözümlemelerini vererek bu konuda size yardımcı olmayı umuyoruz.
Kabarcık Sıralama
Basit ve kolay uygulanabilir olması nedeniyle bildiğimiz sıralama yöntemleri arasında belki de en yaygın olanı budur. Adından da anlaşılabileceği gibi, veri ögeleri (data items), amaçlanan dizeydeki (array) doğru hanelere, komşu ögelerle kıyaslamalar yapılarak dipten su yüzeyine yükselen hava kabarcıkları gibi gönderilirler. Her bir veri ögesi doğru haneye gönderilmiş ve yerleştirilmiş olana dek, başka bir deyişle dizi bütünüyle sıralanmış olana dek sonlu bir sayıda taranır. Çizim-1'de gösterilen diziyi incelerseniz anlatmak istediğimizi daha iyi kavrayabileceğinizi sanıyoruz. Göründüğü üzere bir program örneğini içermektedir. Matematikçi okurlarımız için burada küçük bir noktayı belirtmekte yarar var. Program örneğimiz n-1 kez kıyaslamaları yapmaktadır; ancak biz bu noktayı diğer sıralama yöntemlerine göz atarken hesaba katacağız. Kabarcık sıralama, bilinen en basit sıralama yöntemi olmasının yanı sıra aynı zamanda en yavaşlarından biridir. Bununla birlikte kabarcık sıralamanın en belirgin üstünlüklerinden biri hali hazırda sıralanmış bir dosyaya tek bir kaydın yazılacağı durumlarda en etkin sonucu vermesidir. Yeni kayıt kütüğün sonundan gönderilir ve sıralamada doğru yere gelene kadar bir hava kabarcığı gibi yükselir (yani yeni kaydın hemen üstündeki ögeyle yer değiştirmesi diye bir durum söz konusu değildir.)
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 11
Dalgacık Sıralama
İlke olarak kabarcık sıralamadan farklı değildir. Ancak bu yöntemde ögeler, yükselen hava kabarcıkları gibi dizey ya da dosya boyunca aşağıdan yukarıya değil de, dalgacıklar halinde yukarıdan aşağıya gönderilirler.
Ne ki bu programla biz MARKER adını verdiğimiz bir çentik (flag) takdim ediyoruz. MARKER'in görevi dizinin herhangi bir taranmasında bir yer değişimi gerçekleşmesi halinde bunu haber vermek olacak. Hiçbir değiş tokuşun yapılmadığı durumda MARKER “çentiği atılmayacak”, yani değişken ilk değerini koruyacak, bu da dizinin sıralanmış olduğu anlamına gelecektir. Dolayısıyla program yürütümünden (execution) erken bir çıkış yapılabilecek, böylece işleme süresi (run time) de kısaltılmış olacaktır. Özgün örneğimize dönersek
Dalgacık Sıralamanın nasıl çalıştığını görebilir ve önerdiğimiz çentiğin yöntemi anlamak açısından kullanışlılığına tanık olabiliriz. Çizim-2) Elimizdeki örnekte program yürütümünden erken çıkış fazla bir fark yaratmamakla birlikte (ancak tek bir kıyaslamadan kurtulunabiliyor) daha geniş kapsamlı dosyalarda çalışırken sıralama için gereken zamandan hatırı sayılır ölçüde ekonomi yapılabilmektedir. Özellikle de ele aldığımız dosya sadece kısmi bir sıralamadan geçecekse (yalnızca tek bir kayıt doğru hanede değilse); n-1 kıyaslamalarının maksimumu düşer ve sıralama zamanı son derece kısalır. Ancak kıyaslamaların tümünün de yapıldığı durumlarda bu sıralama yöntemi en azından bir bölümüyle Kabarcık sıralamadan daha yavaş çalışmaktadır. Bunun nedeni de içiçe döngülerde (nested loops) MARKER'in görevlendirilmesi ve test edilmesi için gereken fazla zamandır.
Ayıklamalı Sıralama
Ayıklamalı sıralamanın yukarıda sözünü ettiğimiz diğer iki yöntemden biraz daha üstün olduğunu söyleyebiliriz. Bu yöntemde de üstünde çalışılan dizinin belli sayıda taramaları