「アルゴリズムとデータ構造」のRuby版。
リニアサーチ
# -*- coding: cp932 -*-
NOT_FOUND = -1
N = 10
def linear_search(x, a, num)
# 配列の範囲内で目的の値を探す
n = 0
while n < num && a[n] != x
n += 1
end
return n if n < num
return NOT_FOUND
end
# 適当な配列を作る
array = []
printf("array ")
for i in (0..N - 1)
printf("[%d]:%d ", i, array[i] = rand(20))
end
printf("\n何を探しますか:")
i = gets().to_i
r = linear_search(i, array, N)
if r == NOT_FOUND
printf("%dは見つかりません\n", i)
else
printf("%dは%d番目です\n", i, r)
end
リニアサーチ(番兵つき)
# -*- coding: cp932 -*-
NOT_FOUND = -1
N = 10
def linear_search(x, a, num)
n = 0
# 最後の値をxに入れ替える(番兵)
t = a[num - 1]
a[num - 1] = x
while a[n] != x
n += 1
end
# 配列の最後の値を元に戻す
a[num - 1] = t
return n if n < num - 1
return n if x == t
return NOT_FOUND
end
# 適当な配列を作る
array = []
printf("array ")
for i in (0..N - 1)
printf("[%d]:%d ", i, array[i] = rand(20))
end
printf("\n何を探しますか:")
i = gets().to_i
r = linear_search(i, array, N)
if r == NOT_FOUND
printf("%dは見つかりません\n", i)
else
printf("%dは%d番目です\n", i, r)
end
NOT_FOUND = -1
N = 10
def linear_search(x, a, num)
# 配列の範囲内で目的の値を探す
n = 0
while n < num && a[n] != x
n += 1
end
return n if n < num
return NOT_FOUND
end
# 適当な配列を作る
array = []
printf("array ")
for i in (0..N - 1)
printf("[%d]:%d ", i, array[i] = rand(20))
end
printf("\n何を探しますか:")
i = gets().to_i
r = linear_search(i, array, N)
if r == NOT_FOUND
printf("%dは見つかりません\n", i)
else
printf("%dは%d番目です\n", i, r)
end
リニアサーチ(番兵つき)
# -*- coding: cp932 -*-
NOT_FOUND = -1
N = 10
def linear_search(x, a, num)
n = 0
# 最後の値をxに入れ替える(番兵)
t = a[num - 1]
a[num - 1] = x
while a[n] != x
n += 1
end
# 配列の最後の値を元に戻す
a[num - 1] = t
return n if n < num - 1
return n if x == t
return NOT_FOUND
end
# 適当な配列を作る
array = []
printf("array ")
for i in (0..N - 1)
printf("[%d]:%d ", i, array[i] = rand(20))
end
printf("\n何を探しますか:")
i = gets().to_i
r = linear_search(i, array, N)
if r == NOT_FOUND
printf("%dは見つかりません\n", i)
else
printf("%dは%d番目です\n", i, r)
end
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。