我在Java中实现merge-sort时遇到问题。目标是有两个类,第一个是union,它结合了两个已经排序的数组(我想我有一个正确的)。然而另一类“排序”是我真正陷入困境的地方。我想将一个数组递归地拆分成更小的数组,然后将它们与union结合起来。这是我到目前为止所得到的,我希望有人可以帮助我...谢谢!
class MergeSort {
public static int[] sort(int[] array) {
int[] firsthalf = new int[array.length]; #muss noch verschoben werden, a
System.arraycopy(array, 0, firsthalf, 0, array.length);
int[] firsthalf = Arrays.copyofRange(firsthalf, 0, lefthalf.length/2)
int[] secondhalf= Arrays.copyofRange(
public static int[] union(int[] sortedIntArray1,
int[] sortedIntArray2) {
int[] neuesarray = new int[sortedIntArray1.length + SortedIntArray2.length];
int i = 0, j = 0, k = 0;
while (i < sortedIntArray1.length && j < sortedIntArray2.length)
{
if (sortedIntArray1[i] < sortedIntArray2[j]) #wenn liste an stelle i kleiner als liste 2 an stelle j
{
neuesarray[k] = sortedIntArray1[i];
i++;
}
else
{
answer[k] = sortedIntArray2[j]; #bei umgekehrtem fall, wird von liste2 das element angehängt
j++;
}
k++;
}
while (i < sortedIntArray1.length) #diese while schleifen sind wichtig, sonst bleibt der Zeiger praktisch stehen
{
neuesarray[k] = sortedIntArray1[i];
i++;
k++;
}
while (j < sortedIntArray2.length)
{
neuesarray[k] = sortedIntArray2[j];
j++;
k++;
}
return neusarray;
}
}
}