Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

 

Geschrieben (bearbeitet)

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
Geschrieben
  Am 20.12.2023 um 08:16 schrieb allesweg:

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

Aufklappen  

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

Geschrieben
  Am 20.12.2023 um 08:28 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 + " ");
}

 

 

Aufklappen  

Ja, dann gebe ich es da mal ein 🙂

Geschrieben
  Am 20.12.2023 um 08:29 schrieb JuliH3:

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

Aufklappen  

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...

Geschrieben
  Am 19.12.2023 um 21: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

 

Aufklappen  

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

  • 4 Wochen später...
Geschrieben (bearbeitet)

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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.

Weiterlesen  

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...