Ruby ile Sıralama Algoritmaları Yazmak
November 7th, 2006 by
PINguAR
Bilgisayar alanında okuyan her öğrenci, bir kere bile olsa; sıralama algoritmalarıyla uğraşmanın, bazen ne kadar vahim bir hal aldığını bilir.
Özellikle vize/finalde, türlü türlü sıralama algoritmasını performansına, zamanına, türlü kriterine göre sıralamaya çalışmak, bir yandan kodlamayı akla getirmek vs.vs… Pek de keyifli bir iş değil aslında; en son 2 sene önce C finalinde sadece Selection Sort için bir sayfa kod yazan bir insan olarak, aşağıdaki Ruby kodlarını sunmaktan gurur duyuyorum efem
a = [1,5,54,1,543,5,431,541,54,5,43]
def sort(array)
def min(array, from)
min_val = array[from..-1].min
min_idx = array[from..-1].index(min_val) + from
return min_idx
end
array.each_with_index { |v, i|
min_idx = min(array, i)
tmp = array[i]
array[i] = array[min_idx]
array[min_idx] = tmp
}
array
end
p sort(a)
a = [60,5,54,1,543,5,431,541,54,5,43]
def sort(f, array)
return [] if array.empty?
pivot = array[0]
before = sort(f, array[1..-1].delete_if { |x| not f.call(x, pivot) })
after = sort(f, array[1..-1].delete_if { |x| f.call(x, pivot) })
return (before << pivot).concat(after)
end
p sort(Proc.new { |x, pivot| x < pivot }, a)
a = [1,5,54,1,543,5,431,541,54,5,43]
def sort(array)
i = 0
while (i < array.size)
j = array.size - 1
while (i < j)
if array[j] < array[j - 1]
tmp = array[j]
array[j] = array[j - 1]
array[j - 1] = tmp
end
j -= 1
end
i += 1
end
return array
end
p sort(a)
Diğer algoritmalar için buraya bakabilirsiniz.
Ruby altında kategorilenmiş |













November 8th, 2006 at 8:30 pm
Bunları neden gezegenede yazmıyorsunuz?
November 9th, 2006 at 12:57 am
Ihırm, aslında daha önce açıklamıştım bunu (bkz: önceki yorum kısımları).
Ama, böyle “kendimi daha özgür hissettiğimi” söyleyeyim sadece
November 9th, 2006 at 6:57 am
Gezegende bazen o kadar gereksiz yazılar olabiliyor ki bu sizinkiler gayet gerekli görünüyor. Birçok insanın okuduğunu bile bile “imdat” başlıklı tamamen anlamsız, gereksiz, alakasız, aptalca yazılar yazanlar bile var. Gezegenin de bir adabı olmalı. Bence yayınlamaktan çekinme bunları. Gezegen okuyanların hepsi profesyonel insanlar değiller sıralam algoritması deyip geçmemeli;)
February 24th, 2007 at 9:45 pm
Güzel zamanında biri de sizin gibi kafayı yemiş
http://www.igdirmyo.com/smf/index.php/board,95.20.html
March 1st, 2007 at 12:35 am
İçimden bi ses o biri’nin siz olduğunu söylüyor