1 Temmuz 1988 Tarihli Commodore Gazetesi Sayfa 70

1 Temmuz 1988 tarihli Commodore Gazetesi Sayfa 70
Metin içeriği (otomatik olarak oluşturulmuştur)

Şimdiye kadar bubble sort yönteminin dezavantaj- larından bahsettik. Ancak bu yöntem bazı yönlerden çok kullanışlı. Eğer sıralamanın yapılacağı dizideki elemanlar hemen hemen sıralı durumdaysa sıralama işlemi çok çabuk biter. En önemli avantajlardan birisi sıralama devam ederken ilk sıralanmış elemanları kullanıcıya verebil- memizdir. Bur çok sıralama yönteminde sıralama bi- tene kadar kullanıcı beklemek zorundadır. Ancak bubble sort yönteminde sıralama işleminin başlaması ile birlikte derhal sonuç almaya başlarız. Şimdi örneğimizdeki kelimeleri kullanarak bubble sort'un nasıl çalıştığını İnceleyelim: ANİ AĞIR EVLAT DİŞ MENÜ TIR DÜŞ hür Sıralamaya başlamadan evvel dizinin en altında ANİ kelimesi en üstünde HÜR kelimesi yer alıyor. Sıra- lama işleminde karşılaştırmayı üstten alta veyoa alttan üste doğru yapabiliriz. Ancak üstten alta karşılaştırmcı yapmak her seferinde en azından bir elemanı sonuç olarak ortaya çıkaracağından tercih edilebilir. Karşılaştırlan elemanlar arasında değişiklik yapıl- dığında yukarı çıkan elemanları işaretleyeceğiz. (Ör- neğimizde hür kelimesi hariç diğer kelimeleri büyük harfle yazarak işaretledik). Bir sonraki turda sadece yukarı doğru çıkcın (işaretlenmiş kelimeler) elemanları karşılaştırmak yeterli olacak. Sıralama işlemine ilk başladığımızda en üstte bulu- nan hür kelimesi hariç tüm elemanları işaretliyoruz. Yu- karıdan aşağıya doğru ilk olarak düş ve hür eleman- larını karşılaştırıyoruz. Bu iki eleman sıralı olduğundan bir sonraki karşılaştırmaya geçiyoruz. Tır ve düş ele- manları sırasız olduğundan yerleri değişiyor. TIR keli- mesi yukarı çıktığından bu kelirneyi işaretliyoruz (bü- yük harfle gösteriliyor). İlk turun sonunda dizinin duru- mu: ani ağır diş EVLAT düş MENÜ TIR hür evlat, menü, ve tır kelimeleri yukarı doğru çıktıkla- rından işaretlendiler. Bir sonraki turda sadece bu üç kelime yukarıdaki kelimelerle karşılaştırılacaklar. EVLAT kelimesinide bir sonraki tur için en alt nokta olarak işaretleyebiliriz. Bu noktadan daha aşağı kar- şılaştırma yapmaya gerek yok, Ani, ağır ve diş keli- melerini kullanıcıya sonuç olarak verebiliriz çünkü dizi buraya kadar sıralandı. İkinci tura başladığımızda ilk olarak TIR ve hür keli- melerinin yerlerini değiştiriyoruz. Menü ve hür kelime- leride yer değiştiriyor. Düş kelimesi işaretlenmediğin- den hür kelimesiyle karşilaştırılmiyor. EVLAT ve düş ke- limeleri sırasız olduklarından yer değiştiriyorlar. İkinci turun sonunda dizimiz aşağıdaki hale geliyor: ani ağır diş düş EVLAT hür MENÜ tır Bu noktada dizimiz sıralandı ancak biz bunu üçün- cü turda anlıyoruz. Porgram döküm ekindeki program normal bubble sort programının geliştirilmişidir. Buna rağmen sırala- ma N log N kuralına göre çalışıyor. Ancak yeni ekle- melerle bu yöntemin eskisine göre çok hızlandığını söyleyebiliriz. Şimdi programı biraz açıklayalım: ilk olarak dizideki eleman sayısı soruluyor. Daha son- ra dizideki elemanları giriyoruz. Girilen veriler NŞ adlı diziye yerleştiriliyor. Verileri kullanıcıdan almak yerine bir dosyadan da okuyabilirsiniz. 180 numaralı satırda sıralama işlemine başlıyoruz. J değişkeninde şimdiye kadar sıralaması bitmiş ve so- nuç olarak kullanıcıya iletilmiş eleman sayısı saklanı- yor. Bu değişkenin ilk değer isıfır. 190-220 satırları ara- sıncda indeks dizisi hazırlanıyor. Sıralamaycı başlama- dan evvel indeks dizisindeki elemanların değeri çok basit: ilk eleman 1, İkinci eleman 2, üçüncü eleman Ö u İndeks dizisinde her hangi bir verinin bir üstteki ve- riyle kontrol edilip edilmemesi gerektiğinide saklıyo- ruz. Eğer indeks dizisinde ki değer eksi İşaretliyse, İşa- ret etliği elemanın bir üstteki elemanla karşılaştırılması gerekir. İlk turda tüm elemanların karşılaştırılmasını İs- tediğimizden son eleman hariç diğerlerine eksi işa- ret veriyoruz. J8 değişkeninde dizide karşılaştırmanın yapılaca- ği en alt noktayı saklıyoruz. İlk turda tüm dizide karşı- laştırmad yapacağımızdan bu değişkenin ilk değir bir- Gir. 250-330 arasındaki satırlarda dizideki taramayı ya- piyoruz. İki elemanın karşılaştırılması için X2 değişke- ninin negatif olması gerekiyor. Eğer X2 değişkeni po- zitifse karşılaştırma yapmadan 330 numaralı satırda- ki NEXT komutuna atlıyoruz. Eğer J2 ve J3 değişkenlerinin işaret ettiği eleman- lar sırasızsd bunlara karşılık gelen indekslerin yerini de- giştirip yukarı çıkanı eksi olarak işaretliyoruz. Bir sonraki tura başlamadan evvel 360 numorolı sa- tırda sıralanmış elemanı ekrana yazıyoru Bu kısa programı siralama gerektiren progrc:m&orı— nızda kullanarak zamandan kazanabilirsiniz. Şimdclilik hoşçakalın...

Bu sayıdan diğer sayfalar: