Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

 

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

 

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

  • Autor
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

  • Autor
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 🙂

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.

 

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

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 :) 

  • 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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.