#!/usr/bin/env ruby
def marge_sort(data, min, max)
if min >= max
return
end
mid = (max + min) / 2
marge_sort(data, min, mid)
marge_sort(data, mid + 1, max)
i = k = min
j = mid + 1
tmp = []
while i <= mid && j <= max
if data[i] < data[j]
tmp[k] = data[i]
k += 1
i += 1
else
tmp[k] = data[j]
k += 1
j += 1
end
end
while i <= mid
tmp[k] = data[i]
k += 1
i += 1
end
while j <= max
tmp[k] = data[j]
k += 1
j += 1
end
for i in min..max
data[i] = tmp[i]
end
end
p data = [32, 3244, 832232, 322, 3, 32, 33322]
marge_sort(data, 0, data.size - 1)
p data