www.mikrocontroller.net

Forum: PC-Programmierung [Java - Anfänger] Sehr einfach Sortierungsalgorithmus schreiben


Autor: Christian O. (easter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gemeinde !

Ich bin in Java noch ziemlicher Anfänger und möchte zur Übung einen 
wirklich sehr simplen Sortieralgorithmus für ein Array schreiben.

Mein Ansatz ist folgender :

Es wird eine Variable definiert mit dem Startwert 0.
Dann wird das Array nach diesem Wert durchsucht, und wenn der Wert 
gefunden wurde, dann wird die erste Zahl eines temporären Arrays auf 
diesen Wert gesetzt. Dann wird die Variable erhöht... Dies soll solange 
geschehen, bis man beim Maximum angekommen ist.

Mein Code ist folgender
class DummySort extends Sortierungen{

      public DummySort(int array[]){
            zahlen = array;
      }
      public void sortieren() {
            
          int laenge = zahlen.length;  
          int temp[] = new int[laenge];    
          int tmp0 = 0;
          int tmp1 = 0;
          int tmp2 = 0;
          int i;
          int index = 0;
          int largest;
          
          
          largest = zahlen[0];
          
          for(i =0; i < zahlen.length; i++)
          {
                     
                if(largest < zahlen[i])
                    {
                        largest = zahlen[i];
                        index = i;
                    }
          }
          

       
        
        
         while(tmp2 <= laenge)
         
         {
             if(zahlen[tmp0]  == tmp1)
             {
                 temp[tmp2] = zahlen[tmp0];
                 tmp1++;
                 tmp2++;
             }
           tmp0++;
         }
                
            
            
    
   
        System.out.println("BubbbleSort");
        System.out.println(anzahlvertauschungen + " " +  anzahlvergleiche);
        int j=0;
        while(j<zahlen.length)
        {
            System.out.println(zahlen[j]);
            j++;
        }

            
            
            
      }}

Jedoch funktioniert dieser nicht.

Kann mir da jemand einen Tip geben ?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://de.wikipedia.org/wiki/Bubblesort

Bei Deinem Code sehe ich auf die Schnelle mehrere Probleme:
* Du läufst nur einmal durch ein Feld (was ist eigentlich "zahlen")
* Du überschreibst die Werte statt die Positionen zu tauschen

Autor: Markus Volz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Christian!

Ich habe Deinen Code mal im Debugger ausprobiert, weil es ein doch recht 
ungewöhnlicher (weil ineffizenter) Ansatz zur Sortierung ist. Aber von 
der Idee her sollte er funktionieren.

Alledings nicht mit dem oben geposteten Code. Denn der läßt sich so 1. 
nicht compilieren und 2. tut er nicht ansatzweise das, was Du gerne 
hättest, daß er tun sollte.

zu 1.: In der Klasse DummySort fehlt der Member zahlen, z.B. "private 
int zahlen[];" irgendwo innerhalb der Klasse, aber außerhalb des 
Konstruktors bzw. der Methode sortieren(). Außerdem fehlen die 
Deklarationen der beiden Variable "anzahlvertauschungen" und 
"anzahlvergleiche".

zu 2.: Ich würde Dir empfehlen, zur Programm-Entwicklung den Debugger zu 
bemühen und das Programm mal im Einzelschritt-Modus auszuführen und Dir 
dabei die Inhalte Deiner Variable, vor allem mal die der Arrays 
anzuschauen. Dann geht Dir recht schnell auf, wo es klemmt. Falls Du 
keinen Debugger zur Hand hast: Es gibt die 
OpenSource-Entwicklungsumgebungen (IDEs) Eclipse und NetBeans. Beide 
sind recht leistungsfähig und enthalten alle Werkzeuge, die man so 
braucht, auch einen Debugger. Falls Du keine IDE hast/einsetzt, es geht 
auch mit Bleistift und einem Stück Papier. Sortiere ein kleines Array 
mit z.B. drei Werten und "führe Dein Programm Schriff für Schritt aus". 
Erstelle dabei eine Tabelle mit einer Spalte pro Variable (pro 
Array-Element ebenfalls eine Spalte) und notiere jede Änderung einer 
Variable in einer neuen Zeile.

Beim "Debuggen" vergleiche mal das Verhalten Deines Programms mit dem, 
was Du erwartest, daß es tun soll.

Viel Erfolg!
Markus

Autor: Christian O. (easter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Markus !

Das mit den Variablen stimmt schon, es wird ja von der Klasse 
Sortierungen geerbt. Das Problem liegt im Algorithmus an sich.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.