Zum Inhalt springen

Algorithmus Fehler?


JuliH3

Empfohlene Beiträge

 

Hallo, ich war schon auf Fehlersuche. Array wird einfach wieder ausgegeben. Wo ist der Fehler im Algroithmus?

int[] list = {63, 73, 23, 87, 472}

int a = 0;

int b = list.length-1;

int wei = 0;

 

while(a != b && a != b-1){

    int fab = a;

    int rab = a;

    for(int i = a; i < b-1 ; i++)

 

        if(list <= list[fab] ){

            fab = i;

        }

        if(list >= list[rab]){

            rab = i;

        }


    wei = list[a];

    list[a] = list[fab];

    list[fab] = wei;

 

    wei = list;

    list = list[rab];

    list[rab] = wei;

 

    a = a + 1;

    b = b - 1;

}

 

for(int i = 0 ; i < list.length; i++){

    System.out.print(" "+ list);

 

Danke im Vorfeld für Denkanstösse: LG

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du weißt schon dass ChatGPT existiert?

 

Vergleiche in den Schleifen: Sie vergleichen direkt list mit list[fab] bzw. list[rab], was nicht korrekt ist, da list ein Array ist. Sie sollten Elemente des Arrays vergleichen.

Falsche Verwendung von Variablen: In Ihrer while-Schleife verwenden Sie die Variablen fab und rab falsch. Diese Variablen sollten dazu dienen, den Index des kleinsten und des größten Elements zwischen den Indizes a und b zu finden.

Drucken des Arrays: In Ihrer letzten for-Schleife drucken Sie das gesamte Array anstatt jedes Element. Sie müssen list verwenden, um jedes Element zu drucken.

 

 

int[] list = {63, 73, 23, 87, 472};

int a = 0;
int b = list.length - 1;

while (a < b) {
    int minIndex = a;
    int maxIndex = a;

    for (int i = a; i <= b; i++) {
        if (list[i] < list[minIndex]) {
            minIndex = i;
        }
        if (list[i] > list[maxIndex]) {
            maxIndex = i;
        }
    }

    // Tausche das kleinste Element mit dem ersten Element
    int temp = list[a];
    list[a] = list[minIndex];
    list[minIndex] = temp;

    // Wenn das größte Element jetzt an der Stelle des kleinsten ist
    if (maxIndex == a) {
        maxIndex = minIndex;
    }

    // Tausche das größte Element mit dem letzten Element
    temp = list[b];
    list[b] = list[maxIndex];
    list[maxIndex] = temp;

    a++;
    b--;
}

// Drucken des sortierten Arrays
for (int i = 0; i < list.length; i++) {
    System.out.print(list[i] + " ");
}

 

 

 

Bearbeitet von rasenganIT
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 8 Minuten schrieb allesweg:

Und wie viel ist es dir wert, wenn wir deine Aufgabe für dich erledigen?

Als Anfänger ist es schwierig das Chaos zu verstehen. Einige Syntaxfehler habe ich schon bearbeitet, aber was das Ziel des Algorithmus ist, leuchtet mir gerade noch nicht ein. Lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Minuten schrieb rasenganIT:

Du weißt schon dass ChatGPT existiert?

Vergleiche in den Schleifen: Sie vergleichen direkt list mit list[fab] bzw. list[rab], was nicht korrekt ist, da list ein Array ist. Sie sollten Elemente des Arrays vergleichen.

Falsche Verwendung von Variablen: In Ihrer while-Schleife verwenden Sie die Variablen fab und rab falsch. Diese Variablen sollten dazu dienen, den Index des kleinsten und des größten Elements zwischen den Indizes a und b zu finden.

Drucken des Arrays: In Ihrer letzten for-Schleife drucken Sie das gesamte Array anstatt jedes Element. Sie müssen list verwenden, um jedes Element zu drucken.

 

 

int[] list = {63, 73, 23, 87, 472};

int a = 0;
int b = list.length - 1;

while (a < b) {
    int minIndex = a;
    int maxIndex = a;

    for (int i = a; i <= b; i++) {
        if (list < list[minIndex]) {
            minIndex = i;
        }
        if (list > list[maxIndex]) {
            maxIndex = i;
        }
    }

    // Tausche das kleinste Element mit dem ersten Element
    int temp = list[a];
    list[a] = list[minIndex];
    list[minIndex] = temp;

    // Wenn das größte Element jetzt an der Stelle des kleinsten ist
    if (maxIndex == a) {
        maxIndex = minIndex;
    }

    // Tausche das größte Element mit dem letzten Element
    temp = list;
    list = list[maxIndex];
    list[maxIndex] = temp;

    a++;
    b--;
}

// Drucken des sortierten Arrays
for (int i = 0; i < list.length; i++) {
    System.out.print(list + " ");
}

 

 

Ja, dann gebe ich es da mal ein 🙂

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 22 Stunden schrieb JuliH3:

was das Ziel des Algorithmus ist, leuchtet mir gerade noch nicht ein

Welches Ziel soll ein nicht funktionsfähiger Algorithmus denn haben können? Das widerspricht sich.

Wenn wir hier schon Hausaufgabenhilfe leisten sollen, wäre die komplette unverfälschte Aufgabenstellung sinnvoll...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 19.12.2023 um 22:17 schrieb JuliH3:

Hallo, ich war schon auf Fehlersuche. Array wird einfach wieder ausgegeben. Wo ist der Fehler im Algroithmus?

int[] list = {63, 73, 23, 87, 472}

int a = 0;

int b = list.length-1;

int wei = 0;

while(a != b && a != b-1){

    int fab = a;

    int rab = a;

    for(int i = a; i < b-1 ; i++)

        if(list <= list[fab] ){

            fab = i;

        }

        if(list >= list[rab]){

            rab = i;

        }


    wei = list[a];

    list[a] = list[fab];

    list[fab] = wei;

 

    wei = list;

    list = list[rab];

    list[rab] = wei;

 

    a = a + 1;

    b = b - 1;

}

 

for(int i = 0 ; i < list.length; i++){

    System.out.print(" "+ list);

 

Danke im Vorfeld für Denkanstösse: LG

 

was wolltest du machen? Array sortieren mit Bubble Sort? Bitte benutze auch Code formatierung <> damit Code übersichtlich zu machen :) 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Wochen später...

Da ist nicht der Algorithmusfehler relevant, sondern zunächst mal die Syntax- und Type-Fehler.

Wieso kompilierst das nicht selber und gehst den Fehlermeldungen nach?

Wenn es dann läuft und nicht macht was es soll, dann widmest dich mit einem Debugger dem Algorithmus.

Zumindest wenn du was lernen willst...

Codeapi.org

Bearbeitet von arlecchin0
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...