Hallo goerlibe,
habe ich das richtig verstanden, dass du den Fehler losgeworden bist? Ich kann nicht ganz nachvollziehen, was du gemacht hast, um den Fehler loszuwerden. Mein ursprünglicher Code wäre dieser:
Code: Alles auswählen
{
int i,j,max;
Listobject<T> temp;
for(i=array.length-1;i>0;i--)
{
max = 0;
for(j=1;j<=i;j++)
{
if(array[j].compareTo(array[max]) > 0) max = j;
}
temp = array[max];
array[max] = array[i];
array[i] = temp;
}
return array;
}
Dann sagst du, es reicht, die äußere Schleife umzukehren? Das kann eigentlich nicht sein, denn dann funktioniert der Algorithmus nicht mehr richtig. Wenn ich das mache, sieht der Code so aus:
Code: Alles auswählen
{
int i,j,max;
Listobject<T> temp;
for(i = 0; i < array.length;i++)
{
max = 0;
for(j=1;j<=i;j++)
{
if(array[j].compareTo(array[max]) > 0) max = j;
}
temp = array[max];
array[max] = array[i];
array[i] = temp;
}
return array;
}
Dieser besteht nur 6 von 10 Tests. Wenn ich jetzt den Code so anpasse, dass nach dem niedrigsten Element gesucht wird und das immer nach links gepackt wird, sieht das so aus:
Code: Alles auswählen
{
int i,j,min;
Listobject<T> temp;
for(i=0;i<array.length;i++)
{
min = i;
for(j=i;j<=array.length;j++)
{
if(array[j].compareTo(array[min]) < 0) min = j;
}
temp = array[min];
array[min] = array[i];
array[i] = temp;
}
return array;
}
Das besteht aber auf einmal gar keinen Test! Ich erhalte:
Code: Alles auswählen
Junitreport
Time – 180
Testcount – 10
Failurecount – 10
Ignorerecount – 0
Failurereport
Testheadder – basicTest_complexity(array.sort.tests_selectionSort_iterative.TestSelectionSort)
Message – 4
Trace
Failurereport
Testheadder – basicTest_4_elemented_List_random_values(array.sort.tests_selectionSort_iterative.TestSelectionSort)
Message – 4
Trace
Failurereport
Testheadder – basicTest_change_with_two_elements_random(array.sort.tests_selectionSort_iterative.TestSelectionSort)
Message – 2
Trace
Failurereport
Testheadder – basicTest_for_sorting_like_selectionsort(array.sort.tests_selectionSort_iterative.TestSelectionSort)
Message – 6
Trace
Failurereport
Testheadder – basicTest_5_elemented_list_sorted(array.sort.tests_selectionSort_iterative.TestSelectionSort)
Message – 5
Trace
Failurereport
Testheadder – basicTest_not_change_with_two_elements(array.sort.tests_selectionSort_iterative.TestSelectionSort)
Message – 2
Trace
Failurereport
Testheadder – dynamicTestLong(array.sort.tests_selectionSort_iterative.TestSelectionSort)
Message – 1067
Trace
Failurereport
Testheadder – dynamicTest(array.sort.tests_selectionSort_iterative.TestSelectionSort)
Message – 767
Trace
Failurereport
Testheadder – boundaryTest_inplace(array.sort.tests_selectionSort_iterative.TestSelectionSort)
Message – 1
Trace
Failurereport
Testheadder – basicTest_change_with_two_elements(array.sort.tests_selectionSort_iterative.TestSelectionSort)
Message – 2
Trace
Kann sein, dass ich da einen Fehler eingebaut habe und dass das deswegen nicht funktioniert aber ich finde gerade keinen Fehler. Kannst du mir bitte sagen, wie dein funktionierender Code aussieht?