int[] arr = /* missing code */;
public static void mystery(int[] elements)
{
int n = elements.length;
int[] temp = new int[n];
mystery1(elements, 0, n - 1, temp);
}
private static void mystery1(int[] elements, int from, int to, int[] temp)
{
if (from < to)
{
int middle = (from + to) / 2;
mystery1(elements, from, middle, temp);
mystery1(elements, middle + 1, to, temp);
mystery2(elements, from, middle, to, temp);
}
}
private static void mystery2(int[] elements, int from, int mid, int to, int[] temp)
{
int i = from;
int j = mid + 1;
int k = from;
while (i <= mid && j <= to)
{
if (elements[i] < elements[j])
{
temp[k] = elements[i];
i++;
}
else
{
temp[k] = elements[j];
j++;
}
k++;
}
while (i <= mid)
{
temp[k] = elements[i];
i++;
k++;
}
while (j <= to)
{
temp[k] = elements[j];
j++;
k++;
}
for (k = from; k <= to; k++)
{
elements[k] = temp[k];
}
}