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 :)

Selection Sort:

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)

Quick Sort:

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)

Bubble Sort:

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.