너무도 기초적인 거라 설명이고 자시고 그냥 둘 다 묶어서 한 포스트에 올려본다.

바로 소스 나옴.

 

소스 >>

# 선택 정렬 / 버블 정렬 구현
# 2009-03-17, Jung-taek Lim(Heart)

def swap_array_elem(array, idx1, idx2)
  temp = array[idx1]
  array[idx1] = array[idx2]
  array[idx2] = temp
end

def selection_sort(array)
  array_len = array.length

  (0..array_len - 2).each do |i|
    min_idx = i

    (i+1..array_len - 1).each do |j|
      min_idx = j if array[min_idx] > array[j]
    end

    swap_array_elem(array, i, min_idx) unless min_idx == i
  end
end

def bubble_sort(array)
  array_len = array.length
  
  (0..array_len - 2).each do |i|
    (i+1..array_len - 1).each do |j|
      swap_array_elem(array, i, j) if array[i] > array[j]
    end
  end
end

def make_example_array
  array = [69, 10, 30, 2, 16, 8, 31, 22]
end

array = make_example_array
selection_sort array
puts array.map {|x| x.to_s + " "}.to_s

array = make_example_array
bubble_sort array
puts array.map {|x| x.to_s + " "}.to_s

 

 

 

 

결과 >>

2 8 10 16 22 30 31 69

2 8 10 16 22 30 31 69

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Heart