Skip to content

Instantly share code, notes, and snippets.

@dhiraka
Last active August 29, 2015 14:10
Show Gist options
  • Save dhiraka/338f56ab2b22858e5652 to your computer and use it in GitHub Desktop.
Save dhiraka/338f56ab2b22858e5652 to your computer and use it in GitHub Desktop.
def merge(array1,array2)
index1=0
index2=0
x = array1.length + array2.length
mergedArray = []
while(mergedArray.length < x)
if(array1[index1].nil?)
mergedArray.push(array2[index2])
index2 += 1
elsif (array2[index2].nil?)
mergedArray.push(array1[index1])
index1 += 1
elsif(array1[index1] < array2[index2])
mergedArray.push(array1[index1])
index1 += 1
else
mergedArray.push(array2[index2])
index2 += 1
end
end
return mergedArray
end
def mergeSort(arr)
len = arr.length
if(len == 1)
return arr
elsif (len%2 == 1)
temp = arr.each_slice((len/2)+1).to_a
return merge(mergeSort(temp[0]),mergeSort(temp[1]))
else
temp = arr.each_slice((len/2)).to_a
return merge(mergeSort(temp[0]),mergeSort(temp[1]))
end
end
puts mergeSort([2,5,7,1,9,3,8,4,6])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment