Schon wieder ein Problem - diesmal sortieren

Status
Nicht offen für weitere Antworten.

stormtide

Mitglied
Hallo...
Erst mal danke für eure Hilfe in der letzten Aufgabe.
Würde freiwillig auch gar nicht fragen, aber eben, ich muss Programmieren lernen, Berufsschule halt...
Diesmal geht es darum, eine Anzahl Zahlen zu sortieren, nach dem Prinzip, dass immer zwei Zahlen verglichen werden.
Habe mir den Aufbau des Programmes gut überlegt und war überzeugt, dass es so funktionieren würde.
Tja, dann habe ich cecodet.
Und es geht leider doch nicht.
Weiss vielleicht jemand was ich falsch gemacht habe?
Hier der Code:

Code:
/* Definition der Variablen */
		int anzahl;		/* Definiert die Anzahl der Zahlen die sortiert werden sollen */
		int i;			/* Zähler 1 */
		int j;			/* Zähler 2 */
		int hilfe;		/* Variable für die Zwischenspeicherung von Werten */
		
		/* Eingabe der Anzahl Zahlen */
		System.out.print ("Bitte geben Sie die Anzahl der zu sortierenden Zahlen ein: ");
		anzahl=ReadInt();
		
		/* Definition des Arrays */
		int[] zahl=new int[anzahl];
		
		/* Einlesen der Werte ins Array */
		for (i=0; i<anzahl; i++) {
			System.out.print ("Bitte geben Sie die "+i+". zu sortierende Zahl ein: ");
			zahl[i]=ReadInt();
		}
		
		/* Sortieren der Zahlen */
		for (i=0; i<anzahl; i++) {
			for (j=0; j<anzahl; j++) {
				if (zahl[j]>zahl[j++]) {
					hilfe=zahl[j];
					zahl[j]=zahl[j++];
					zahl[j++]=hilfe;
				}
			}
		}
		
		/* Ausgabe der sortierten Zahlen */
		for (i=0; i<anzahl; i++) {
			System.out.print (zahl[i]+", ");
		}
 

foobar

Top Contributor
Du darfst j beim Dreieckstausch nicht inkrementieren, sonst überspringst du Elemente. Hier ist ein Bubblesort von mir:
Code:
public class Bubblesort
{

        public static void main(String[] args) 
        {
          int[] feld = {17,32,7,13,4};
          int temp;
          boolean getauscht = false;
            
          do
          {
                getauscht = false;
                for (int i=0; i < feld.length-1; i++)
                {
                    if (feld[i] > feld[i+1])
                    {
                                temp      = feld[i];
                                feld[i]   = feld[i+1];
                                feld[i+1] = temp;
                                getauscht = true;
                    }
                }
            
          }while (getauscht);
          
          for (int j=0; j < feld.length; j++ )
          {
                System.out.println(feld[j]);
          }
            
          
        }
}
 

stormtide

Mitglied
das heisst ich definiere für j++ eine neue variable, die den wert j+1 bekommt, ersetzt alle j++ damit und dann funktionierts?

leider nicht... die zahlen bleiben immer noch unsortiert...
 

foobar

Top Contributor
Guck dir an wie ich es gelöst habe. Du brauchst keine neue Variable zu definieren, sondern mußt die Stellen im Dreieckstausch, bei denen die Variable j inkrementiert wird, durch j +1 ersetzen.
 

foobar

Top Contributor
Lösung Nr. 2:
Code:
		int[] zahlen = new int[]{34,1,7,23,5};
		for (int i = 0; i < zahlen.length; i++)
		{
			for (int j = 0; j < zahlen.length-1; j++)
			{
				if (zahlen[j] > zahlen[j+1])
				{
					int buffer = zahlen[j];
					zahlen[j] = zahlen[j+1];
					zahlen[j+1] = buffer;
				}
			}
		}
		/* Ausgabe der sortierten Zahlen */
		for (int i = 0; i < zahlen.length; i++)
		{
			System.out.print(zahlen[i] + ", ");
		}
 

foobar

Top Contributor
Ein paar generelle Tips:
- deklariere Variablen immer erst an der Stelle an der du sie auch wirklich brauchst. Globalevariablen als Zähler in For-Schleifen sind tödlich.
- Informiere dich genau über den zu implementierenden Algorithmus z.b. hier http://de.wikipedia.org/wiki/Bubblesort
 

stormtide

Mitglied
hm, variablen an der stelle deklarieren an dem du sie brauchst. naja, ist mir auch schon eingefallen...
aber unser lehrer lässt das nicht zu...
schlimm, nicht?
jedenfalla darf ich das nicht, obwohl ich weiss dass es sauberer wäre.

habe deine variante umgesetzt, funktioniert immer noch nicht richtig, diesmal ein fehler beim kompilieren, den ich nicht finde. anscheinend habe ich einen denkfehler gemacht beim zähler, da ein array ja bei 0 beginnt...?

du bist genial! hat geklappt...
jetzt nur noch struktogramm anpassen und drucken ;-)
liebe grüsse und vielen dank!
andy
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
D Schon wieder double -.- Java Basics - Anfänger-Themen 4
L Und schon wieder :=( Java Basics - Anfänger-Themen 3
J Schon wieder Rekursionsproblem Java Basics - Anfänger-Themen 3
C jar als Applet einbinden will schon wieder nicht Java Basics - Anfänger-Themen 7
T schon wieder ausführbare .jar-dateien Java Basics - Anfänger-Themen 2
D was ist denn nun schon wieder? Einfaches JSP. Java Basics - Anfänger-Themen 6
W Schon wieder Taschenrechner Java Basics - Anfänger-Themen 13
F Schon wieder replace Java Basics - Anfänger-Themen 7
L Schon wieder ClassLoader bzw. Classpath :-( Java Basics - Anfänger-Themen 3
G Compiler hängt schon wieder Java Basics - Anfänger-Themen 14
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
berserkerdq2 Hashmap, wie prüfe ich ob ein Key schon existiert Java Basics - Anfänger-Themen 19
nbergmann eclipse schon mit "HalloWelt" unverständlich. Java Basics - Anfänger-Themen 4
Naxon89 Threads Android AysncTask => Überprüfen, ob ein Ergebniss schon vorliegt Java Basics - Anfänger-Themen 5
K Wie kontrolliere ich ob ich die Zahl in meinem Array schon hab? Java Basics - Anfänger-Themen 9
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
M Suchfunktion schon bei Teilen des Wortes Java Basics - Anfänger-Themen 4
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
N kein Sound beim Öffnen der jar-Datei, in Eclipse schon Java Basics - Anfänger-Themen 1
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 13
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 1
I Hilfe beim löschen schon Buchstaben. Java Basics - Anfänger-Themen 4
N Dynamisch erzeugtes Label wird nicht angezeigt, TextField schon Java Basics - Anfänger-Themen 1
MrSnake Prüfen ob TitledPane schon besteht Java Basics - Anfänger-Themen 2
P Shape Zeichnen klappt nicht - einlesen der Breite/Höhe schon Java Basics - Anfänger-Themen 1
C Check ob eine HashMap schon existiert Java Basics - Anfänger-Themen 16
C OOP Erstellen eigener Objekte die es schon gibt "schlau"? Java Basics - Anfänger-Themen 3
M Ist die Hamcrest Bibliothek auch schon in Junit 4.11 verfügbar? Java Basics - Anfänger-Themen 1
V relativer Pfad geht nicht, absolut schon? Java Basics - Anfänger-Themen 3
S Threads Thread wenn extends schon vergeben Java Basics - Anfänger-Themen 8
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
S A* Path Algorithmus in Java schon vorhanden Java Basics - Anfänger-Themen 3
M In Netbeans kein Problem, im Terminal schon Java Basics - Anfänger-Themen 3
N leere JTextArea wird nicht angezeigt - TextArea aber schon? Java Basics - Anfänger-Themen 5
M Kein Sound in der .jar, davor schon Java Basics - Anfänger-Themen 6
Luk10 Serialisierung bei schon vorhandener Datei Java Basics - Anfänger-Themen 15
H "Adressbuch" erstellen - Problem schon bei Datumsüberprüfung Java Basics - Anfänger-Themen 9
A Aufruf einer externen schon laufenden Anwendung Java Basics - Anfänger-Themen 3
K kein Sound beim Öffnen der jar-Datei, in Eclipse schon Java Basics - Anfänger-Themen 2
G integer schon initalisiert Java Basics - Anfänger-Themen 11
L beim ersten compilen schon erste probleme Java Basics - Anfänger-Themen 8
A Fehler schon bei kleinigkeiten Java Basics - Anfänger-Themen 9
S kann man das kürzer schreiben? bzw gibts dafür schon was? Java Basics - Anfänger-Themen 6
G Schon die Installation nicht hinbekommen ? Java Basics - Anfänger-Themen 4
S ich stör schon widr wegen meine gui Java Basics - Anfänger-Themen 2
M imageicon aus jar (ja hab die suchfunktion schon benutzt :)) Java Basics - Anfänger-Themen 2
G Button schon gedrückt wenn "mouseOver" Java Basics - Anfänger-Themen 3
B schon beim einsteiger-beispiel durchgefallen. Java Basics - Anfänger-Themen 2
B schon mal mit JavaBeans Activation Framework gearbeitet? Java Basics - Anfänger-Themen 2
S Schon jetzt problem =(=( Java Basics - Anfänger-Themen 51
R Abfragen, ob schon ein Eintrag in der HashMap steht Java Basics - Anfänger-Themen 11
G wenn auch schon oft gefragt (Konstruktor , Instanzen , usw) Java Basics - Anfänger-Themen 6
DrahtEck Schleife soll wieder da anfangen wo ich es möchte ! Java Basics - Anfänger-Themen 17
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
W In alten Code zurück- und dort wieder zurechtfinden? Java Basics - Anfänger-Themen 17
I Passwort in Datenbank speichern um später wieder auszulesen Java Basics - Anfänger-Themen 5
Temsky34 Wie bekomme ich dieses Java-Warning wieder weg? Java Basics - Anfänger-Themen 2
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
f3mys Objektwerte in Liste speichern und wieder abrufen Java Basics - Anfänger-Themen 23
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
H JavaFX Hintergrundfarbe ändern, warten, Hintergrundfarbe wieder ändern Java Basics - Anfänger-Themen 34
MichelNeedhelp Brauche zu diesem Labyrinth ein Skript? Der Hamster soll im Urzeigersinn das ganze Labyrinth abgehen und wieder an seinem Ursprungsplatz sein. Java Basics - Anfänger-Themen 40
D Codeblöcke, die immer wieder im Programmverlauf benötigt werden Java Basics - Anfänger-Themen 5
TimoN11 Array -> Schleife wieder von vorne durchlaufen lassen Java Basics - Anfänger-Themen 1
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
J Selektiertes Element von jComboBox zwischenspeichern und wieder einsetzen Java Basics - Anfänger-Themen 0
S Nutzereingabe splitten und in string array wieder ausgeben. Java Basics - Anfänger-Themen 1
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
N Wie kann ich einen String wieder zusammensetzen und ausgeben lassen? Java Basics - Anfänger-Themen 9
C Array-Eintrag wieder auf Null setzen Java Basics - Anfänger-Themen 3
W Verschachtelte Objekte wieder auspacken Java Basics - Anfänger-Themen 3
M Array immer wieder um ein Element erweitern Java Basics - Anfänger-Themen 6
CptK Methoden Event bei gedrückter Maustaste immer wieder ausführen Java Basics - Anfänger-Themen 1
CptK Klassen Event bei gedrückter Maus immer wieder mit Pause ausführen Java Basics - Anfänger-Themen 2
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
M JTextField blitzt immer wieder nur auf Java Basics - Anfänger-Themen 12
CptK Datentypen Verdrehte Wörter wieder herstellen Java Basics - Anfänger-Themen 21
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
I Methoden Schleife immer wieder durchlaufen lassen Java Basics - Anfänger-Themen 15
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
M Schleifenergebnis in selbiger wieder verwenden Java Basics - Anfänger-Themen 7
L Methoden Rekursion gibt alten Wert wieder Java Basics - Anfänger-Themen 37
L jar, class, java und wieder zurück Java Basics - Anfänger-Themen 8
M aus Fenster anderes Fenster öffnen und wieder umgekehrt Java Basics - Anfänger-Themen 5
J Fenster wieder unsichtbar machen Java Basics - Anfänger-Themen 2
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
S Sound stoppen und nach Pause wieder abspielen Java Basics - Anfänger-Themen 6
T while schleife starten , beeneden und wieder Starten Java Basics - Anfänger-Themen 8
I Zähler, der erst wieder zählt nachdem Pixel wieder andere Farbe hat Java Basics - Anfänger-Themen 2
B javax.ejb.Timer wieder starten? Java Basics - Anfänger-Themen 0
N Methode auslagern mal wieder Java Basics - Anfänger-Themen 8
F Inhalt einer Variable auswerten, die sich immer wieder ändert Java Basics - Anfänger-Themen 1
Bluedaishi for schleife um Dateien wieder zusammen zu fügen Java Basics - Anfänger-Themen 11
I SHA512 verschlüsseln und dann wieder auslesen? Java Basics - Anfänger-Themen 35
F Timer abbrechen und wieder starten Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben