Guten Tag ! - sortieren !

Status
Nicht offen für weitere Antworten.

Alois

Mitglied
Guten Tag !


ich bin neu hier im forum, und eigentlich auch (fast) neu in der Java Welt !
Habe zwar schon einige leichtere codes programmiert, aber mehr nicht.
Ich waage mich jetzt an ein etwas schwereres projekt.
Und zwar will ich ein programm schreiben, das die befehlszeilenargumente (gleitkommazahlen) absteigend sortiert und wieder ausgibt.

Nur will ich das ganze selber schreiben, also ohne irgendwelche importieren klassen wie zB sort !

Hat jemand hinweise oder ansätze für mich, wie ich an das problem ran gehen muss ?


Dankeschön !
 
S

SlaterB

Gast
ich denk, du willst das selber schreiben? ;)

wenn du Double.parseDouble nicht verwendest,
dann fange erstmal mit einer entsprechenden Operation an,

nimm dir einen Teststring wie "-17.04",
und überlege dir wie daraus eine Zahl wird,

das Minus gesondert behandeln,
Punkt suchen
usw.
 

Alois

Mitglied
Guten Tag !

Ich will es selber schreiben, ja. Also ohne irgendwelche Klassen, wie zB sort oder ähnliche !
 

Alois

Mitglied
Hallo !

Ich habe die Seite jetzt durch, aber einen Ansatz hab ich leider noch immer nicht erstellen können.

Habe auf einer Seite folgendes gefunden, kann aber den Code nicht ganz deuten, kann mir vlt. jemand helfen ?

Code:
public static void selectionSort(long[] a) {
for (int i = 0; i < a.length - 1; i = i + 1) {
int indexMin = i;
for (int j = i + 1; j < a.length; j = j + 1) {
if (a[j] < a[indexMin]) {
indexMin = j;
}
}
tausche(a, i, indexMin);
}
}


Dankeschön
 

DocRandom

Top Contributor
Hi Alois!

Der von Dir gepostete Code ist zwar recht nett von Pascal nach Java umgesetzt, aber ich würde mir an Deiner Stelle dennochmal den Code an der Site angucken!
Ist dort an und für sich ja wirklich gut erklärt.

mfg
DocRandom
 

Alois

Mitglied
Hallo DocRandom !

also auf www.sortieralgorithmen.de konnte ich mich nicht wirklich zurecht finden.
Ist der von mir gepostet Code keine Möglichkeit ? Wenn ich den richtig verstanden habe, dann müsste dieser aber aufsteigend sortieren oder ?


Danke und Gruß !
 
S

SlaterB

Gast
> kann aber den Code nicht ganz deuten

was kannst du nicht deuten?
blinde Fragen 'erkläre mir alles' sind sinnlos,

überlege vorher selber und stelle sinnvolle Fragen, etwa
'warum beginnt die innere Schleife bei i+1?'
am besten kombiniert mit
'mir scheint, es reicht i-4 für die gedachte Aufgabe xy, oder was stimmt bei dieser meiner Schlussfolgerung nicht?'
 

Alois

Mitglied
Hallo !

Naja hier zB

for (int i = 0; i < a.length - 1; i = i + 1) {

die for schleife wird nur ausgeführt, wenn das i kleiner als die variable -1 ist oder ? und warum ist i gleich i+1 ?! Heißt dass, das in der nächsten Schleife mit i+1 weiter gemacht wird ?

und hiermit

public static void selectionSort(long[] a) {

kann ich leider gar nicht viel anfangen ?!


Grüße
 
S

SlaterB

Gast
oha, bei diesen Lücken solltest du vieles tun,
aber dich mit Sortieralgorithmen beschäftigen gehört ganz bestimmt nicht dazu ;)

public static void selectionSort(long[] a) {
heißt:
eine statische Operation namens selectionSort definieren, ohne Rückgabewert, mit Paramter a, ein Array von long-Zahlen

for (int i = 0; i < a.length - 1; i = i + 1) {
heißt
eine Schleife von Code, i fängt bei 0 an, steigt bei jedem Durchgang um 1
und die Schleife wird bei a.length-1 abgebrochen

nochmal mache ich das aber ganz bestimmt nicht,
lerne erstmal Java ;)
 

Alois

Mitglied
Hallo !

Nach langer Arbeit habe ich den Code nun umgeschrieben, und er funktioniert auch soweit

Code:
public class BubbleSort {

public static void sort(double[] array) {
// Wir nehmen erstmal an, dass das Array sortiert ist.
boolean sortiert = true;
do {
sortiert = true;
// Nun gehen wir das Array komplett durch...
for (int i = 1; i < array.length; i++) {
// und vergleichen jedes Element mit dem linken Nachbar,
// darum fängt die for-Schleife auch mit 1 an und nicht mit 0.
if (array[i - 1] < array[i]) {
// Sollte das linke Element kleiner sein als das rechte,
// so werden diese beiden vertauscht.
final double tmp = array[i - 1];
array[i - 1] = array[i];
array[i] = tmp;
// Und wir merken uns, dass das Array eben doch
// nicht sortiert war.
sortiert = false;
}
}
// Den obigen Code müssen wir nun so lange ausführen,
// bis keine Vertauschungen mehr nötig sind.
// Dies ist genau dann der Fall, wenn das array sortiert ist.
} while (!sortiert);
// Diese Methode braucht auch keinen Rückgabewert,
// da das übergebene Array modifiziert wird.
}

// nur zum Testen
public static void main(String[] args) {
double[] test = {52.90 , 654.3,654.5,654.4,2,35,12,5,7,9};
sort(test);
for (int i=0; i<test.length; i++) {
System.out.println(test[i]);
}
}
}

Das einzige was ich jetzt noch einbauen will ist, dass er Zahlen sortiert, die ich selber in der Befehlszeile eingebe .. also wenn ich 6 4 8 23 eingeb soll: 23 8 6 4 ausgegeben werden zB.

dafür brauche ich dann wohl sowas in der Art hier, oder ?

Code:
public static void main(String[] args) {
		double[] d = new double[args.length];
		for (int i = 0; i < args.length; i++) {
			d[i] = Double.parseDouble(args[i]);
		}
		// ab hier mit double Array weiterarbeiten
	}

Mein Problem ist hald, dass ich meine beiden Codes nicht zu einem funktionierenden zusammenfügen kann ...


Viele Grüße
 

DocRandom

Top Contributor
Hallo Alois!

Ich habs nicht getestet, sondern nur im Editor mal runtergeklopft!
Aber probiers mal so:
Code:
public class BubbleSort {

	public static void sort(double[] array) {
		//	 Wir nehmen erstmal an, dass das Array sortiert ist.
		boolean sortiert = true;
		do {
			sortiert = true;
			// Nun gehen wir das Array komplett durch...
			for (int i = 1; i < array.length; i++) {
				/* 
				 * und vergleichen jedes Element mit dem linken Nachbar,
				 * darum fängt die for-Schleife auch mit 1 an und nicht mit 0.
				 */
				if (array[i - 1] < array[i]) {
					/*
					 * Sollte das linke Element kleiner sein als das rechte,
					 * so werden diese beiden vertauscht.
					 */
					double tmp = array[i - 1];
					array[i - 1] = array[i];
					array[i] = tmp;
					/*
					 * Und wir merken uns, dass das Array eben doch  nicht sortiert war.
					 */
					sortiert = false;
				}
			}
			/*
			 * Den obigen Code müssen wir nun so lange ausführen,
			 * bis keine Vertauschungen mehr nötig sind.
			 * Dies ist genau dann der Fall, wenn das array sortiert ist.
			 */

		} while (!sortiert);
		/*
		 * Diese Methode braucht auch keinen Rückgabewert,
		 * da das übergebene Array modifiziert wird.
		 */
	}

	// Hauptprogramm
	public static void main(String[] args) {
		
		double[] test = {52.90 , 654.3,654.5,654.4,2,35,12,5,7,9};
 		/*
		 * abfragen ob in der Comandozeile Werte uebergeben worden sind?
		 * Ja, unser Programm mit diesen Daten füttern!
		 * Nein, wie gehabt mit der Test-Routine arbeiten
		 */
		if (args.length > 1) {
			/*
			 * wir brauchen ja mindest 2 Werte, sonst können wir ja nix 
			 * sortieren! ;)
			 */
			test = new double[args.length-1];
			for (int i = 0; i < args.length; i++)	{
				test[i] = Double.parseDouble(args[i]);
			}
		}
		sort(test);
		for (int i=0; i<test.length; i++) {
			System.out.println(test[i]);
		}
	}
}

mfg
DocRandom
 

Alois

Mitglied
Hallo !


Ja vielen Dank, so funktioniert es. So ähnlich hatte ich den Code auch schon zum Laufen gebracht. Nur will ich das ganze jetzt so verändern, dass ich selbst in der Eingabezeile die Werte eingebe die sortiert werden sollen.

Also java Bubblesort 34 6 4 2 9 [enter]

und dann werden die werte sortiert ausgegeben.

Dazu brauch ich ja sowas in der Art hier, oder ?

Code:
public static void main(String[] args) { 
      double[] d = new double[args.length]; 
      for (int i = 0; i < args.length; i++) { 
         d[i] = Double.parseDouble(args[i]); 
      } 
      // ab hier mit double Array weiterarbeiten 
   }


Viele Grüße
 

Alois

Mitglied
Ja so in der Art.

Ich geb die Zahlen ein, und ausgegeben werden die Zahlen sortiert (absteigend)

Ich glaube ich bin mit meinen 2 Codes schon nahe dran, aber ich kann sie nicht sinnvoll zusammenfügen :-(


Grüße
 

DocRandom

Top Contributor
..dann guck Dir das Beispiel mal genauer an, schalte auch die ruhenden Gehirnzellen ein!
Denn die Lösung steht da bereits!

mfg
DocRandom
 

Alois

Mitglied
Hallo !


also

Code:
import java.io.*;
004 
005 public class Listing0207
006 {
007   public static void main(String[] args)
008   throws IOException
009   {
010     int a, b, c;
011     BufferedReader din = new BufferedReader(
012                          new InputStreamReader(System.in));
013 
014     System.out.println("Bitte a eingeben: ");
015     a = Integer.parseInt(din.readLine());
016     System.out.println("Bitte b eingeben: ");
017     b = Integer.parseInt(din.readLine());

Ja dieser Code eignet sich anscheinend zur eingabe, eben zB für die Werte die ich sortieren will.
Und diese Werte muss ich dann an mein Arry weitergeben, also kann ich den Code den ich schon habe weiterverwenden.

Trotzdem bekomme ich diese Teile nicht zusammengefügt ... :(


Grüße
 

Alois

Mitglied
der andre Teil in diese Bsp ist dann also für die Ausgabe ...

Aber das ganze zusammenzufügen ist mein Problem ...


Grüße (auch aus Wien)
 

DocRandom

Top Contributor
..und wo liegt das Problem?
Keine Tastatur?
Kein Cut & Paste im Editor vorhanden?

..oder verstehen wir gar ned was ma da machen und suchen wir nur einen Dummen für die HA?

mfg
DOcRandom
 

Alois

Mitglied
Ich verstehe den Code soweit ich ihn habe. Aber ich kann nicht umsetzen, dass ich selbst in der Eingabezeile werte eingebe ...

Das ganze ist nicht für mich, mein Bruder hat programmieren in der Schule, und ist ziemlich hinten nach. Und ich frische meine Java Kenntnisse auf um ihm zu helfen.

Fakt ist dass er den Code eigentlich morgen bräuchte, und ich gerade dabei bin, ihm den Code soweit zu erklären wie ich ihn selbst verstehe.

Wie gesagt, es scheitert daran den Code so zu modifizieren dass man die Werte selbst eingibt ...


Grüße
 

DocRandom

Top Contributor
..so das war das letzte mal, das ich Dir geholfen habe!
Fehlerbehandlung etc. wurde mit absicht nicht eingebaut!
Irgendwas müßt Ihr auch selber machen!
Außerdem weiß der Lehrer morgen e´h das das nicht von Euch sein kann / ist!
Ergo, gibts nur eines: Lernen, lernen, lernen, lernen!
D.h. Alle Spiele vom Computer löschen! ;)

Code:
import java.io.*;

public class BubbleSort {

	public static void sort(double[] array) {
		//	 Wir nehmen erstmal an, dass das Array sortiert ist.
		boolean sortiert = true;
		do {
			sortiert = true;
			// Nun gehen wir das Array komplett durch...
			for (int i = 1; i < array.length; i++) {
				/* 
				 * und vergleichen jedes Element mit dem linken Nachbar,
				 * darum fängt die for-Schleife auch mit 1 an und nicht mit 0.
				 */
				if (array[i - 1] < array[i]) {
					/*
					 * Sollte das linke Element kleiner sein als das rechte,
					 * so werden diese beiden vertauscht.
					 */
					double tmp = array[i - 1];
					array[i - 1] = array[i];
					array[i] = tmp;
					/*
					 * Und wir merken uns, dass das Array eben doch  nicht sortiert war.
					 */
					sortiert = false;
				}
			}
			/*
			 * Den obigen Code müssen wir nun so lange ausführen,
			 * bis keine Vertauschungen mehr nötig sind.
			 * Dies ist genau dann der Fall, wenn das array sortiert ist.
			 */

		} while (!sortiert);
		/*
		 * Diese Methode braucht auch keinen Rückgabewert,
		 * da das übergebene Array modifiziert wird.
		 */
	}

	// Hauptprogramm
	public static void main(String[] args) throws NumberFormatException, IOException {
		
		double[] test = {52.90 , 654.3,654.5,654.4,2,35,12,5,7,9};
		/*
		 * abfragen ob in der Comandozeile Werte uebergeben worden sind?
		 * Ja, unser Programm mit diesen Daten füttern!
		 * Nein, wie gehabt mit der Test-Routine arbeiten
		 */
		if (args.length > 1) {
			/*
			 * wir brauchen ja mindest 2 Werte, sonst können wir ja nix 
			 * sortieren! ;)
			 */
			test = new double[args.length-1];
			for (int i = 0; i < args.length; i++)	{
				test[i] = Double.parseDouble(args[i]);
			}
		} else {
			System.out.println("Was moechten Sie tun?");
			System.out.println("---------------------");
			System.out.println("1 Einen Test starten");
			System.out.println("2 Zahlen selbst eingeben");
			System.out.println("---------------------");
			System.out.print("Ihre Eingabe bitte: ");
			BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
			int eingabe = Integer.parseInt(buff.readLine());
			switch (eingabe) {
				case 1:
					System.out.println("Testlauf wird gestartet");
					break;
				case 2:
					for ( int i = 0; i < test.length; i++) {
						System.out.print((i + 1)+". Zahl: ");
						test[i] = Double.parseDouble(buff.readLine()); 
					}
					break;
				default:
					System.out.println("Ungültige Eingabe, Testlauf wird gestartet!");
			}
		}
		sort(test);
		for (int i=0; i<test.length; i++) {
			System.out.println(test[i]);
		}
	}
}

mfg
DocRandom
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
D Guten Tag mache gerade eine Umschulung zum FiSi war leider jetzt 2 Wochen Krank und wir hatten Prozendurale Programmierung. Java Basics - Anfänger-Themen 3
S Gibt es einen guten kostenlosen Online-kurs Java Basics - Anfänger-Themen 2
J Guten tag, Ich hoffe ihr habt einen schönen Sonntag und könnt mir helfen Java Basics - Anfänger-Themen 2
S Erste Schritte Suche nach einem guten JAVA-Buch (Definition im Thread) Java Basics - Anfänger-Themen 6
M Sind ternäre Operatoren für einen guten Programmierstil wichtig ? Java Basics - Anfänger-Themen 10
G Suche Guten Editor zum Loggen Java Basics - Anfänger-Themen 3
F Zugriff auf Instanzvariablen, Frage zum guten Stil Java Basics - Anfänger-Themen 2
J suche guten Java-Compiler! Java Basics - Anfänger-Themen 6
V Brauche mal einen Tip von ECHT GUTEN LEUTEN! Java Basics - Anfänger-Themen 2
richis-fragen Mehrere Spalten mit Comparator sortieren Java Basics - Anfänger-Themen 2
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J HashSet mit Comparable sortieren Java Basics - Anfänger-Themen 13
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
O Sortieren mit Insertion Sort Java Basics - Anfänger-Themen 3
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Jambolo Karten sortieren nach Rang und Farbe Java Basics - Anfänger-Themen 5
rosima26 Java nach letzter Ziffer sortieren Java Basics - Anfänger-Themen 19
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
G zweidimensionales int Array sortieren Java Basics - Anfänger-Themen 57
K Java sortieren. Java Basics - Anfänger-Themen 7
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
J Tabelle Sortieren Java Basics - Anfänger-Themen 48
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
L Sortieren Java Basics - Anfänger-Themen 1
C Wie 2 Arrays zusammenfügen und sortieren? Java Basics - Anfänger-Themen 11
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
W Personen sortieren mit Comparator Java Basics - Anfänger-Themen 9
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
L Array sortieren Java Basics - Anfänger-Themen 4
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
T Java: Array monat absteigend sortieren? Java Basics - Anfänger-Themen 1
B Liste sortieren? Java Basics - Anfänger-Themen 4
P Array Sortieren mit boolean? Java Basics - Anfänger-Themen 33
scratchy1 Array sortieren und dann String-Repräsentation ausgeben Java Basics - Anfänger-Themen 2
O Arrays sortieren in einer Methode Java Basics - Anfänger-Themen 2
E Methoden 2 Arrays sortieren (MergeSort) Java Basics - Anfänger-Themen 3
B Suchen und sortieren Java Basics - Anfänger-Themen 10
F Zahlen im Feld sortieren + Unterprogramm Java Basics - Anfänger-Themen 4
O Zweidimensional Array sortieren Java Basics - Anfänger-Themen 14
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
CptK Variablen Teile eines Arrays zufällig sortieren Java Basics - Anfänger-Themen 7
K Methoden Array[][] sortieren Java Basics - Anfänger-Themen 30
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
E ArrayList sortieren Java Basics - Anfänger-Themen 16
L Methode zum sortieren Java Basics - Anfänger-Themen 1
L Methode zum sortieren Java Basics - Anfänger-Themen 1
B Sortieren mit Iterator Java Basics - Anfänger-Themen 4
B Wie kann ich die Buchstaben sortieren nach der Höhe der Zahlen Java Basics - Anfänger-Themen 14
A Sortieren ausgerechneter Werte aus einer TXT Datei Java Basics - Anfänger-Themen 8
E LMC (Assembler) Sortieren von 3 Zahlen Java Basics - Anfänger-Themen 4
J String, Int und double Array sortieren Java Basics - Anfänger-Themen 16
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
A Array sortieren Java Basics - Anfänger-Themen 1
N StringArray alphabetisch sortieren Java Basics - Anfänger-Themen 4
Tommy135 Erste Schritte JavaDoc Sortieren Java Basics - Anfänger-Themen 5
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
D Arraylisten sortieren bitte um Hilfe Java Basics - Anfänger-Themen 4
informatikschüler21 String im Array sortieren Java Basics - Anfänger-Themen 4
U Methoden Zweidimensionales Array mit Arrays.sort sortieren? Java Basics - Anfänger-Themen 22
M Arrays sortieren und kleinster Abstand Java Basics - Anfänger-Themen 3
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
N TreeMap alphabetisch sortieren? Java Basics - Anfänger-Themen 3
I <List> sortieren Java Basics - Anfänger-Themen 2
F Interface Nach mehreren Kriterien sortieren Java Basics - Anfänger-Themen 2
R Objekte Vergleichen und Sortieren Java Basics - Anfänger-Themen 3
I Sortieren nach Priorität Java Basics - Anfänger-Themen 3
S List<T<X,Y> sortieren Java Basics - Anfänger-Themen 5
W Array sortieren Java Basics - Anfänger-Themen 3
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
Alex/89 Werte einer .txt Datei sortieren Java Basics - Anfänger-Themen 8
N Bubble Sort sortieren mit Int Werte Java Basics - Anfänger-Themen 8
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
S array sortieren Java Basics - Anfänger-Themen 7
D Array mit Zufallszahlen, dann sortieren: Hilfe gesucht! Java Basics - Anfänger-Themen 1
D Methoden int-Array absteigend sortieren Java Basics - Anfänger-Themen 8
C Chars in einem String alphabetisch sortieren Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben