Mergesort af flerdimensionel array.
Har siddet og stirret mig blind på min mergesort af et flerdimensionalt array.Problemet er at resultatet bliver anden halvdel af arrayet 2 gange efter hinanden og det bliver desværre ikke sorteret. Nogen der kan se hvad fejlen er, vil skyde på det er en fejl i en tæller et eller andet sted
Kode:
private static void sorterArray(Object[][] data, int intStart, int i, int intType){
int i1;
int i2;
if(i > 1){
i1 = i / 2;
i2 = i - i1;
sorterArray(data, intStart, i1, intType);
sorterArray(data, intStart + i1, i2, intType);
samlArray(data, intStart, i1, i2, intType);
}
}
private static void samlArray(Object[][] data, int intStart, int i1, int i2, int intType){
Object[][] temp = new Object[i1 + i2][3];
int kopieret = 0;
int kopieret1 = 0;
int kopieret2 = 0;
while((kopieret1 < i1) && (kopieret2 < i2)){
if(Float.parseFloat(data[intStart + kopieret1][intType].toString()) < Float.parseFloat(data[intStart + i1 + kopieret2][intType].toString())){
for(int ii = 0; ii < data[0].length; ii++){
temp[kopieret][ii] = data[intStart + (kopieret1)][ii];
}
kopieret++;
kopieret1++;
}
else{
for(int ii = 0; ii < data[0].length; ii++){
temp[kopieret][ii] = data[intStart + i1 + (kopieret2)][ii];
}
kopieret++;
kopieret2++;
}
}
while(kopieret1 < i1){
for(int ii = 0; ii < data[0].length; ii++){
temp[kopieret][ii] = data[intStart + (kopieret1)][ii];
}
kopieret++;
kopieret1++;
}
while(kopieret2 < i2){
for(int ii = 0; ii < data[0].length; ii++){
temp[kopieret][ii] = data[intStart + i1 + (kopieret2)][ii];
}
kopieret++;
kopieret2++;
}
for(int i = 0; i < i1 + i2; i++){
for(int ii = 0; ii < temp[0].length; ii++){
data[i][ii] = temp[i][ii];
}
}
}