# prac0701.rb
# サブルーチン
def bubblesort!(list)
j = list.size - 1
while j > 0 do
i = 0
while i < j do
sleep(0.5) # 並列処理の違いを分りやすくするため
if list[i] > list[i+1]
tmp = list[i]
list[i] = list[i+1]
list[i+1] = tmp
end
i += 1
end
j -= 1
end
end
# メインルーチン
t1 = Thread::fork{
list = [5,3,1,2,4]
bubblesort!(list)
p list
}
t2 = Thread::fork{
list = [50,30,10,20,40,60]
bubblesort!(list)
p list
}
t3 = Thread::fork{
list = [500,300,100]
bubblesort!(list)
p list
}
t4 = Thread::fork{
list = [5,3,1,2,5,6,7]
bubblesort!(list)
p list
}
t5 = Thread::fork{
list = [1,5,4]
bubblesort!(list)
p list
}
t1.join
t2.join
t3.join
t4.join
t5.join