Seite 2 von 2

Re: selection sort auf array - "iteration of triangle change"

Verfasst: 25. Jun 2017 20:51
von goerlibe
...

Re: selection sort auf array - "iteration of triangle change"

Verfasst: 26. Jun 2017 08:58
von Khaleesi
Push!!

Re: selection sort auf array - "iteration of triangle change"

Verfasst: 28. Jun 2017 17:39
von LukasPhysiker
Ich hatte am Montag mein zweites Codemonkeys-Testat und diese Aufgabe war bei mir dabei und natürlich war dieser Bug immer noch da, so dass mir da jetzt Punkte für den einen Test fehlen. Ich habe das damals auch dem Betreuer gesagt und er hat gesagt, er wird sich bei den zuständigen Leuten melden. Er fragte mich auch, ob ich das schon jemand gemeldet hatte und ich sage "Ja, es gibt einen Thread im Forum seit 1. Juni, auf den von offizieller Seite bisher keiner reagiert hat." Für mich persönlich war das jetzt nicht so tragisch, da ich anderswo genug Punkte hatte.

Trotzdem: Es sollte sich hier langsam mal jemand melden. Das sind die Authoren der Aufgabe laut Aufgabenstellung: Jan Ratjens, Julian Prommer, Katrin Becker. Das ist das zweite Mal, dass ich euch beim Namen nenne. Ihr drei wollt sicher nicht, dass irgendwann ein potentieller Arbeitgeber euren Namen googelt und diesen Thread findet und dieser nicht damit endet, dass sich einer von euch drei meldet.

Wie gesagt, kann es mir jetzt egal sein, aber ich wollte hier nochmal darauf hinweisen, wie lächerlich das ist, dass dieser Thread schon so lange existiert und von offizieller Seite keiner darauf reagiert hat, so dass in einem Testat, das 25 Tage später war, dieser Fehler immer noch auftrat.

Re: selection sort auf array - "iteration of triangle change"

Verfasst: 8. Jul 2017 15:19
von Dadung
Ich kann euch zwar nicht erklären, was ich anders gemacht haben soll, aber folgender Code besteht alle Tests:


Code: Alles auswählen

{
   int l = array.length;
    
   while (l > 1){
        int m = 0;
        for (int j = 1; j < l; j++){
            if (array[j].compareTo(array[m]) > 0){
                m = j;
            }
        }
        if (m != (l - 1)){
        Listobject<T> c = array[m];
        array[m] = array[l - 1];
        array[l - 1] = c;
        }
        l--;
    }
    return array;
}

Re: selection sort auf array - "iteration of triangle change"

Verfasst: 9. Jul 2017 12:05
von GreenLightning
Hier ist noch eine Version die alle Tests besteht:

Code: Alles auswählen

{
    for (int i = array.length - 1; i > 0; i--) {
        int biggest = 0;
        for (int j = 1; j <= i; j++)
            if (array[j].compareTo(array[biggest]) > 0)
                biggest = j;
        Listobject tmp = array[biggest];
        array[biggest] = array[i];
        array[i] = tmp;
    }
    return array;
}
Wie in der Aufgabe beschrieben soll der sortierte Teil des Arrays von rechts nach links wachsen, deshalb geht die äußere Schleife rückwärts durch das Array. Was nicht in der Aufgabenstellung beschrieben wurde, sind die folgenden beiden Bedingungen. Als erstes muss der unsortierte Teil des Arrays von links nach rechts durchsucht werden. Als zweites muss immer das aktuelle Element mit dem größten Element verglichen werden, nicht andersrum. Es muss also wie oben

Code: Alles auswählen

array[j].compareTo(array[biggest]) > 0
heißen, das semantisch äquivalente

Code: Alles auswählen

array[biggest].compareTo(array[j]) < 0
ist falsch und bringt den letzten Test zum scheitern.