2015年1月10日土曜日

150110(2)

Ruby


「アルゴリズムとデータ構造」のRuby版。

クイックソート

# -*- coding: cp932 -*-

# データの件数
N = 10

def quickSort(bottom, top, data)
  return if bottom >= top
  # 先頭の値を「適当な値」とする
  div = data[bottom]
  lower = bottom
  upper = top
  while lower < upper
    while lower <= upper && data[lower] <= div
      lower += 1
    end
    while lower <= upper && data[upper] > div
      upper -= 1
    end
    if lower < upper
      temp = data[lower]
      data[lower] = data[upper]
      data[upper] = temp
    end
  end
  # 最初に選択した値を中央に移動する
  temp = data[bottom]
  data[bottom] = data[upper]
  data[upper] = temp
  quickSort(bottom, upper - 1, data)
  quickSort(upper + 1, top, data)
end

@sort = []
printf("ソート準備:\n")
for i in (0..N - 1)
  # 配列にランダムな値を格納
  @sort[i] = rand(1000)
  printf("%d ", @sort[i])
end
printf("\nソート開始:\n")
quickSort(0, N - 1, @sort)
printf("\nソート終了:\n")
for i in (0..N - 1)
  printf("%d ", @sort[i])
end

0 件のコメント:

コメントを投稿