「アルゴリズムとデータ構造」の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
# データの件数
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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。