auch negative Zahlen sotieren

Darknet

Bekanntes Mitglied
Was muss ich hier ändern um negative Zahlen korrekt zu sotieren?

Code:
public int[] bubbleSort(int[] a1){
    int i = 1;
  
     
   
      if(a1.length == 0){
       return a1;
       }
    int zwischenschpeicher =0;
    do{
       
        if(a1[i]<a1[--i] ){ i++;
            zwischenschpeicher = a1[i];
            a1[i] = a1[--i];
            a1[i] = zwischenschpeicher;
        }
        i++;
        i++;
    } while(i < a1.length);
   
    return a1;
}
 

Darknet

Bekanntes Mitglied
Das ganze ist eine do while schleife start bei Index 1 und fragt den vorherigen wert ob er größer ist wenn ja vertausche die werte.
Ja das geht auch anderster aber ich soll es mit einer do while schleife schreiben
 

mihe7

Top Contributor
Ich meinte auch nicht die Schleife, sondern die Verwendung der Pre-/Post-Inkrement-Operatoren. Damit das jemand versteht, muss er sich erst einmal damit beschäftigen, in welcher Reihenfolge Java Ausdrücke auswertet.
 

Darknet

Bekanntes Mitglied
Code:
public int[] bubbleSort(int[] a1){
    int i = 1;
  
     
   
      if(a1.length == 0){
       return a1;
       }
    int zwischenschpeicher =0;
    do{
       
        if(a1[i]<a1[i-1] ){ i+1;
            zwischenschpeicher = a1[i];
            a1[i] = a1[i-1];
            a1[i] = zwischenschpeicher;
        }
       i+1;
       i+1
    } while(i < a1.length);
   
    return a1;
}
Hab ich gerade glernt --i erst abziehen i-- erst nach den durchlauf abziehen :)
 

mihe7

Top Contributor
Das ist etwas völlig anderes: mit den Inkrement-Operatoren wird der Wert der Variablen verändert. Mit der Addition alleine dagegen nicht. Daher sind die Zeilen i+1; völlig sinnfrei.

Und
Java:
            a1[i] = a1[--i];
            a1[i] = zwischenschpeicher;
liefert ein anderes Ergebnis als
Java:
            a1[i] = a1[i-1];
            a1[i] = zwischenschpeicher;
 

mihe7

Top Contributor
Aber es funktioniert ja mit --i nur negative Zahlen nicht
Ah ja:
Java:
import java.util.Random;
import java.util.Arrays;

public class Test {
    private Random rand = new Random(1L);

    public int[] bubbleSort(int[] a1){
        int i = 1;
      
         
       
          if(a1.length == 0){
           return a1;
           }
        int zwischenschpeicher =0;
        do{
           
            if(a1[i]<a1[--i] ){ i++;
                zwischenschpeicher = a1[i];
                a1[i] = a1[--i];
                a1[i] = zwischenschpeicher;
            }
            i++;
            i++;
        } while(i < a1.length);
       
        return a1;
    }

    public boolean perform(int[] expected, int[] data) {
        try {
            int[] actual = bubbleSort(data);
            if (Arrays.equals(expected, actual)) {
                return true;
            }
            System.err.printf("Expected %s but got %s\n", 
                    Arrays.toString(expected), Arrays.toString(actual)); 
        } catch (Exception ex) {
            System.err.printf("Expected %s while sorting %s but got an exception\n",
                    Arrays.toString(expected), Arrays.toString(data));
            ex.printStackTrace();
        }
        return false;
    }
    
    public static void main(String[] args) {
        Test test = new Test();
        int testCases = 10;
        int failures = 0;
        for (int i = 0; i < testCases; i++) {
            int[] data = test.createRandomArray(i);
            int[] expected = new int[data.length];
            System.arraycopy(data, 0, expected, 0, data.length);
            Arrays.sort(expected);
            if (!test.perform(expected, data)) {
                failures++;
            }
        }

        System.out.printf("%d of %d tests failed\n", failures, testCases);
    }

    private int[] createRandomArray(int len) {
        int[] data = new int[len];
        for (int i = 0; i < len; i++) {
            data[i] = rand.nextInt(len);
        }
        return data;
    }
}
 

Darknet

Bekanntes Mitglied

Soll sein:[-5, -4, -3, -2]Ist zustand:[-3, -4, -5, -2]
Falsch
Falsch
Soll zustand:
[-5, -4, 2, 3]
Ist Zustand:[2, -4, -5, 3]
 

Darknet

Bekanntes Mitglied
Die Tabelle zeigt an was rauskommt Soll was rauskommen soll und ist wie es rauskommt. Ich nutze nur ein vorgefertigten Script also hab nur zugriff auf die Klasse BubbleSort diese bereits ausgetauscht aber nichts besser
 

mihe7

Top Contributor
Ja, weil Dein Code nicht funktioniert und zwar nicht nur bei negativen Zahlen sondern im Allgemeinen.

Schau Dir an, wie Bubblesort funktioniert und schreib den Code neu aber so, dass Du ihn auch verstehst.
 

Blender3D

Top Contributor
Was muss ich hier ändern um negative Zahlen korrekt zu sotieren?
Wenn der Code korrekt formuliert ist funktioniert er auch mit negativen Zahlen.
Java:
if(a1[i]<a1[--i] )
Hier wird während des Vergleichs die laufende Variable verändert. Was auf alle Fehler einen Fehler darstellt.

Bring die fehlerhafte Verwendung der Inkrementoperatoren in Deinem Code in Ordnung und die Frage wegen der negativen Zahlen erübrigt sich.
Außerdem benötigt Bubblesort eine doppelte Schleife.
 
K

kneitzel

Gast
Also so massiv, wie du i verringerst und erhöhst würde der Code bei mir durchfallen unabhängig davon, ob er funktioniert oder nicht. Das —i im if machst du nach dem if mit einem i++ sofort rückgängig, aber Dein Tauschen kann nicht funktionieren:
Angenommen i ist 10, dann speicherst du den 10 wert.
Dann wird der 10. Wert zu dem 9ten Wert, i ist danach 9.
Dann schreibst du den gemerkten Wert in den 9. Wert.

Da mich interessiert, wie Dein Lehrer reagiert:
Mach aus der zweiten Zuweisung aus dem i ein ++i, damit machst du das idiotische —i rückgängig...

Dann könnte es funktionieren ....
 
K

kneitzel

Gast
Aber im Ernst: schau Dir an, was —i, ++i, i— und i++ machen.

Oder merke Dir einfach: i++ und i— alleine als reiner increment ist ok, wer sowas aber meint in irgendwelchen Befehlen verwenden zu wollen, der schreibt Code, der unleserlich ist und sehr anfällig für Fehler ist... und wird dann bei sogenannten Coderevisionen entsprechend angegangen....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen Kann Arrays.stream() auch auf Objekte angewant werden? Java Basics - Anfänger-Themen 10
richis-fragen JTable sowohl Spaltennamen wie auch Spaltenbeschriftungen Java Basics - Anfänger-Themen 7
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
luggas89 If else auch mit unterschiedlichen Antworten Java Basics - Anfänger-Themen 5
berserkerdq2 sqllite in Java, wenn ich mache select count(*) ..., erhalte ich dann nur die gezählte Anzahl oder werden auch die Tabellen ausgegeben? Java Basics - Anfänger-Themen 2
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
W Methoden aufrufen - auch klassenübergreifend? Java Basics - Anfänger-Themen 9
I Ausgabe nicht nur senkrecht sondern auch waagerecht. Java Basics - Anfänger-Themen 2
S Methoden - Warum int wenn auch void? Java Basics - Anfänger-Themen 3
G Wofür benötigt man die Umgebungsvariablen sowohl in Windows 10 als auch in Mac OS Catalina Java Basics - Anfänger-Themen 19
C Methoden Java ist auch eine Insel Listing 2.40 Recursion Java Basics - Anfänger-Themen 7
J Projektideen für Java (auch gehobeneres Niveau)? Java Basics - Anfänger-Themen 16
B Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren Java Basics - Anfänger-Themen 9
B Email versand - aber akzeptiert auch falscher Username und Passwort??? Java Basics - Anfänger-Themen 1
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
J Die Y Koordinate von einer anderen Klasse auch verändern Java Basics - Anfänger-Themen 1
A Zahlenraten auch in for-Schleife darstellbar? Java Basics - Anfänger-Themen 32
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
F Erste Schritte Java ist auch eine Insel kaufen? Java Basics - Anfänger-Themen 2
P Kann ich Java - Programme auch ohne Editor öffnen? Java Basics - Anfänger-Themen 70
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
J Keyboard Event auch ohne Fokus mitbekommen Java Basics - Anfänger-Themen 2
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
A Fehlermeldung Unklar, google hilft auch nicht weiter Java Basics - Anfänger-Themen 2
S Java Counter: nur 1 mal hochzählen auch wenn Abfrage mehrmals zutrifft. Java Basics - Anfänger-Themen 1
D Türme von Hanoi in "Java ist auch eine Insel" Java Basics - Anfänger-Themen 4
V wie kann man am einfachsten für ein Element der JavaFX die Umrandung aktiwieren ? auch ohne css ? Java Basics - Anfänger-Themen 4
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Java Basics - Anfänger-Themen 4
M Ist die Hamcrest Bibliothek auch schon in Junit 4.11 verfügbar? Java Basics - Anfänger-Themen 1
R AES Key 256 Illegal Key Size auch bei Änderung der Policy Java Basics - Anfänger-Themen 3
B Kann man Windowbuilder auch mit Juno (also Eclipse 4.2) nutzen? Java Basics - Anfänger-Themen 1
C String Objekt erstellen auch ohne new() möglich? Java Basics - Anfänger-Themen 5
DaniSahne96 Frage zu Java ist auch eine Insel Java Basics - Anfänger-Themen 12
C Input/Output Primzahlenzerlegung -> könnte man Zahlen auch einlesen? Java Basics - Anfänger-Themen 4
T Bin Anfänger ... das Thema auch ? Java Basics - Anfänger-Themen 10
G JFrame nur ein mal öffnen, auch beim mehrmaligem Betätigen Java Basics - Anfänger-Themen 11
M Swing Klasse auch per Kommandozeile starten? Java Basics - Anfänger-Themen 2
J Geldberechner(aus Java ist auch eine Insel) Java Basics - Anfänger-Themen 6
F Können Klasse auch Werte liefern? Java Basics - Anfänger-Themen 3
J Kann man auch alles in einer Klasse schreiben? Java Basics - Anfänger-Themen 2
G Erste Schritte JAVA ist auch eine Insel Java Basics - Anfänger-Themen 7
T Collections Werte aus einer HashMap auslesen, oder gehts auch einfacher ? Java Basics - Anfänger-Themen 6
D Klassen Programm funktionert - aber auch ökonomisch? Java Basics - Anfänger-Themen 23
S KeyListener aktiv auch wenn minimiert? Java Basics - Anfänger-Themen 4
S Liste aller Partitionen (auch "unmounted") Java Basics - Anfänger-Themen 2
E Programm auch auserhalb von Eclipse nutzen? Java Basics - Anfänger-Themen 3
Hindi93 Java is auch ne Insel CD Java Basics - Anfänger-Themen 8
A JFormattedTextField Zahleneingabe auch mit beginnender 0 Java Basics - Anfänger-Themen 4
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
D BETAVERT aus Excel auch in Java? Java Basics - Anfänger-Themen 4
K 50 errormeldungen- komme auch nach vielen Nachmittagen nicht weiter. bitte helfen Java Basics - Anfänger-Themen 39
J Instanzvariable auch in erbenden klassen Java Basics - Anfänger-Themen 4
T Frage aus dem Buch JAVA ist auch eine Insel Java Basics - Anfänger-Themen 11
M Kann man Bedingungen auch ohne Schleifen prüfen? Java Basics - Anfänger-Themen 5
D Kann noch fast nichts, funktioniert auch fast nichts! Java Basics - Anfänger-Themen 8
T Sind Kontrollflussanweisungen auch Methoden? Java Basics - Anfänger-Themen 5
P Gibts auch Triple? Java Basics - Anfänger-Themen 9
D runden ohne math! (zur not auch mit) Java Basics - Anfänger-Themen 9
E Einen String auch über die Laufzeit hinaus speichern Java Basics - Anfänger-Themen 4
C Methoden auch für Arrays verfügbar machen Java Basics - Anfänger-Themen 8
S Codebeispiel aus Java ist auch eine Insel. Java Basics - Anfänger-Themen 2
M Eltern-Fenster wird auch geschlossen Java Basics - Anfänger-Themen 6
M Systray Eintrag auch nach Neustart Java Basics - Anfänger-Themen 5
C seo-Webseiten auch mit Java möglich? Java Basics - Anfänger-Themen 8
M gehen applets auch in .jar dateien? Java Basics - Anfänger-Themen 3
L Wie kann ich auch in einem ActionListener ein neues java Pro Java Basics - Anfänger-Themen 8
L Bedingung immer false, auch wenn zwei Strings gleich sind Java Basics - Anfänger-Themen 11
P switch-case Konstrukt auch mit case i < 6: s = 6 ? Java Basics - Anfänger-Themen 10
G Massenersetzungen am besten auch mit replaceAll? Java Basics - Anfänger-Themen 3
C Überprüfen, ob die eingabe auch buchstaben enthält Java Basics - Anfänger-Themen 6
C Kann man class Dateien auch lesen? Java Basics - Anfänger-Themen 8
D flash object mit JS definieren.auch für Java Applet? Java Basics - Anfänger-Themen 13
R getImage auch für File-Objekte? Java Basics - Anfänger-Themen 3
C Einloggen auch per ENTER Taste (KeyListener Problem) Java Basics - Anfänger-Themen 8
D Arrays vergleichen (oder wie man das auch nennen will). Java Basics - Anfänger-Themen 13
B mit Runtime.getRuntime().exec auch HTML-Dateien öffnen? Java Basics - Anfänger-Themen 7
R Woher bekomme ich das aktuelle Jahr oder auch Datum? Java Basics - Anfänger-Themen 4
J Gibts soetwas wie DBTable in Delphi auch in Java Java Basics - Anfänger-Themen 2
G Hashtables mit Objekten oder auch nicht? Java Basics - Anfänger-Themen 5
I einen text von tastatur in array einlesen und auch ausgeben Java Basics - Anfänger-Themen 1
C JTable - Checkbox, Icon, was auch immer. Java Basics - Anfänger-Themen 8
W Replace - geht das auch kürzer? Java Basics - Anfänger-Themen 4
J Sprachausgabe auch mit Stimme meiner Frau? Java Basics - Anfänger-Themen 6
V Pause auch ohne Threads? Java Basics - Anfänger-Themen 6
T Java ist auch eine Insel: Beispielprogramm fehlerhaft? Java Basics - Anfänger-Themen 2
S Polymorphie - oder auch spanisches Dorf? Java Basics - Anfänger-Themen 5
G wenn auch schon oft gefragt (Konstruktor , Instanzen , usw) Java Basics - Anfänger-Themen 6
A Edit Text Negative Decimalzahlen Java Basics - Anfänger-Themen 18
M negative Zahlen bei Intervallen Java Basics - Anfänger-Themen 10
A Negative float Werte? Java Basics - Anfänger-Themen 10
C Positive und negative Zahlen mit Regex extrahieren Java Basics - Anfänger-Themen 8
F Negative Zahl erzwingen Java Basics - Anfänger-Themen 3
J jOptionPane, Array und negative Zahlen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen


Oben