Aşkın Yollu’nun Web Günlüğü
Bubble sort algoritması kabaca: verilen dizideki elemanları ikili olarak karşılaştırıp gerekli olduğunda yerlerini değiştirmek esasına dayanır. Elimizde 11 5 8 4 6 84 7 sayılarında oluşan bir dizi olduğunu var sayalım ve bu diziyi küçükten büyüğe sıralamak isteyelim.
Son durumda 7 elemanlı bir dizi için 6 kontrol yaptık ve en büyük elemanı sona attık. Şimdiki karşılaştırmalarımızda artık son elamanı yok sayabiliriz. Yani problemimiz artık 6 elemanlı bir diziyi sıralamak oldu. Aynı işlemleri 6 eleman varsayarak yaptığımızda sırasıyla problem 5, 4, 3, 2 ve 1 elemanlı dizileri sıralamaya dönüşecek. 1 elemanlı dizi herzaman sıralı olduğu için hiç bi derdimiz sıkıntımızda kalmayacak:) Bu şekilde işlemleride 6 defa yaptık.
Şimdi sıra geldi koda
(define vector-bubble-sort (lambda (vec op) (let ((tmp 0) (stop-do #f)) (do ((i 0 (+ i 1))) ((or (= i (vector-length vec)) stop-do)) (set! stop-do #t) (do ((j 0 (+ j 1))) ((= j (- (vector-length vec) i 1))) (if (not (op (vector-ref vec j) (vector-ref vec (+ j 1)))) (begin (set! tmp (vector-ref vec j)) (vector-set! vec j (vector-ref vec (+ j 1))) (vector-set! vec (+ j 1) tmp) (set! stop-do #f)))))) vec))
DrScheme de etkileşim penceresine
(vector-bubble-sort #(5 11 8 4 6 84 7) < )
şeklide giriş yapmamız gerekiyor. "< " işareti yerine ">" işaretide koyabiliriz. Bu sayede birde büyükten küçüğe sıralamak için aynı kodları yazmamıza gerek kalmayacak.
Benzer YazılarAşkın Yollu
Dokuz Eylül Üniversitesi
Bilgisayar Mühendisliği
Öğrenci
Kafama esenleri bu bloga koyuyorum
Gün gelir bi karikatür koyarım, gün gelir teknik bir makale yazarım, gün gelir hocanın bitanesine küfür - iltifat ederim, gün gelir hiçbirşey yazmam. Kısacası kafama göre takılırım.
Yorum Yaz