Skip to content

Instantly share code, notes, and snippets.

@gingeleski
Created September 20, 2016 00:26
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gingeleski/cbf657ea2c9d051e0298d31e834abec2 to your computer and use it in GitHub Desktop.
Save gingeleski/cbf657ea2c9d051e0298d31e834abec2 to your computer and use it in GitHub Desktop.
Merge sort implemented in Java
import java.util.ArrayList;
public class Main
{
public static ArrayList<Integer> mergeSort(ArrayList<Integer> ar)
{
if (ar.size() <= 1) return ar;
ArrayList<Integer> left, right;
left = new ArrayList<Integer>();
right = new ArrayList<Integer>();
for (int i = 0; i < ar.size(); i++)
{
if (i % 2 != 0) left.add(ar.get(i));
else right.add(ar.get(i));
}
left = mergeSort(left);
right = mergeSort(right);
return merge(left, right);
}
private static ArrayList<Integer> merge(ArrayList<Integer> left, ArrayList<Integer> right)
{
ArrayList<Integer> ret = new ArrayList<Integer>();
while (!left.isEmpty() && !right.isEmpty())
{
if (left.get(0) <= right.get(0))
{
ret.add(left.get(0));
left.remove(0);
}
else
{
ret.add(right.get(0));
right.remove(0);
}
}
while (!left.isEmpty())
{
ret.add(left.get(0));
left.remove(0);
}
while (!right.isEmpty())
{
ret.add(right.get(0));
right.remove(0);
}
return ret;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment