JuliH3 Geschrieben 19. Dezember 2023 Geschrieben 19. Dezember 2023 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
be98 Geschrieben 19. Dezember 2023 Geschrieben 19. Dezember 2023 Völliges Chaos ohne sinnvolle Benennung von Variablen ist der erste Fehler Panopticon und Parser reagierten darauf 2
Tratos Geschrieben 20. Dezember 2023 Geschrieben 20. Dezember 2023 Haltepunkte einfügen, und Variablen entsprechend anschauen.
allesweg Geschrieben 20. Dezember 2023 Geschrieben 20. Dezember 2023 Variablen sinnvoll benennen Was soll der Vergleich zweier unterschiedlicher Datentypen bringen?
JuliH3 Geschrieben 20. Dezember 2023 Autor Geschrieben 20. Dezember 2023 Hi, vielen Dank für die Anmerkungen. Das ist die Aufgabe, den Algorithmus sinnvoll machen.
allesweg Geschrieben 20. Dezember 2023 Geschrieben 20. Dezember 2023 Und wie viel ist es dir wert, wenn wir deine Aufgabe für dich erledigen? JuliH3 reagierte darauf 1
JuliH3 Geschrieben 20. Dezember 2023 Autor Geschrieben 20. Dezember 2023 vor einer Stunde schrieb Tratos: Haltepunkte einfügen, und Variablen entsprechend anschauen. Wo würdest du einen Haltpunkt einbauen? Lg
rasenganIT Geschrieben 20. Dezember 2023 Geschrieben 20. Dezember 2023 (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 20. Dezember 2023 von rasenganIT
JuliH3 Geschrieben 20. Dezember 2023 Autor Geschrieben 20. Dezember 2023 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
JuliH3 Geschrieben 20. Dezember 2023 Autor Geschrieben 20. Dezember 2023 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 🙂
SoL_Psycho Geschrieben 20. Dezember 2023 Geschrieben 20. Dezember 2023 vor 10 Stunden schrieb JuliH3: Ja, dann gebe ich es da mal ein 🙂 ...hat er doch schon getan für dich, siehe sein Post...
Tratos Geschrieben 21. Dezember 2023 Geschrieben 21. Dezember 2023 vor 22 Stunden schrieb JuliH3: Wo würdest du einen Haltpunkt einbauen? Lg Bei deinem Kentnissstand ziemlich weit oben, dann F11 schritt für schritt durchgehen. Dann siehste ja was jede Zeile so passiert.
allesweg Geschrieben 21. Dezember 2023 Geschrieben 21. Dezember 2023 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...
Gofer Geschrieben 21. Dezember 2023 Geschrieben 21. Dezember 2023 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
arlecchin0 Geschrieben 13. Januar 2024 Geschrieben 13. Januar 2024 (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 13. Januar 2024 von arlecchin0
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden