Lisp Dili ile Selection Sort

Merhaba arkadaşlar. Bu yazımda Lisp türevi bir dil olan DrRacket ile Selection Sort Algoritmasını yazacağım.

Direkt Kod veriyorum elimden geldiğince yorum satırları ile ekleme yaptım.

(define kucuk(lambda (L) (cond
                           ((null? (cdr L))(car L)) ;eğer tek eleman varsa o en küçüktür.
                           ((< (car L) (kucuk (cdr L)))(car L)) ; eğer gelen eleman diğerlerinden küçük ise onu yolla
                           (else
                            (kucuk (cdr L)) ; diğer elemanlar için sürekli döner
                            )
                           )
               )
  )

(define sil(lambda (A L) (cond
                           ((null? L) '()) ; listenin boş olup olmadığını kontrol ediyor.
                           ((eq? (car L) A) (cdr L)) ;aradığımız elemana eşit mi
                           (else
                            (cons (car L) (sil A (cdr L))) ;tüm elemanları döndürür
                            )
                           )
             )
  )

(define SelectionSort (lambda(L) (cond
                                   ((null? L) L) ; boş kontrolü
                                   ((null? (cdr L))L) ;liste sadece bir eleman ise
                                   (else
                                    (cons (kucuk L)(SelectionSort (Sırala L)));--
                                    ;
                                    )
                                   )
                        )
  )

(define Sırala(lambda (L) (cond
                            ((null? L)L) ;boş kontrolü
                            (else (sil (kucuk L)L))))) ;en küçüğü bul ve listeden sil

(SelectionSort '(3 12 5 98 7 19 18 21 1))

Kısaca belirtmek istiyorum. Bir dizideki en küçük elemanı bulduktan sonra onu başka bir diziye alıp eski dizisinden silmemiz gerekiyor ki, ilk gelen dizide en küçüğü aradığımızda o sayı gelmesin.

Umarım faydalı olmuştur. Hatalı olan kısım bulursanız bana bildirirseniz sevinirim..

Orjinal Kaynak için tıklayınız..

[the_ad id=”441″]

Bunlara Göz Atmak İsteyebilirsiniz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir