PINguAR.org
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.
Özlü SözEvery program has (at least) two purposes: the one for which it was written, and another for which it wasn't.
--Alan J. Perlis
5 Responses for "Ruby ile Sıralama Algoritmaları Yazmak"
Bunları neden gezegenede yazmıyorsunuz?
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
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;)
Güzel zamanında biri de sizin gibi kafayı yemiş
http://www.igdirmyo.com/smf/index.php/board,95.20.html
İçimden bi ses o biri’nin siz olduğunu söylüyor
Leave a reply