Sortieralgorithmus - Aufgabe mit Lösungsidee

Susi123

Aktives Mitglied
Ich habe folgendes Struktogramm vorliegen und bin mir nicht sicher, wie ich es auf das Array anwenden soll, bzw. ob ich es richtig verstanden habe.

12702

12701

In der ersten Zeile soll ich eine Schleife machen, die von n (hier: 6) bis 2 läuft mit der Zählervariable i
in der zweiten Zeile soll ich eine Schleife machen, die von 2 bis i (hier: 6) läuft mit der Zählervariable j
Die dritte Zeile ist eine if-Abfrage. Die Bedingung von dieser Abfrage ist A[j-1] >= A[j].

Ich beginne damit: A [1] >= A [2] --> Bedingung ist erfüllt, da Z >=A. Das heißt ich tausche A[1] mit A[2], also sieht das Array jetzt folgendermaßen aus: W Z O E L F.
Dann prüfe ich: A[2] >= A [3] --> Bedingung ist erfüllt, da Z >=O. Das heißt ich tausche A[2] mit A[3], also sieht das Array jetzt folgendermaßen aus: W O Z E L F.
Das ganze führe ich bis zum Schluss durch und komme dann auf: W O E L F Z.

Habe ich den Algorithmus damit richtig angewandt oder ist da ein Denkfehler enthalen? Irgendwie bin ich mir da so unsicher.

---
Wie muss ich den Algorithmus ändern, dass er stabil arbeitet? Stabil bedeutet doch , dass die Reihenfolge der Datensätze gleichbleibt, deren Sortierschlüssel auch gleich sind. Also wenn zwei Mal das gleiche Element vorkommt, dass dann die ursprüngliche Reihenfolge beibehalten wird.
 

LimDul

Top Contributor
Ich habe folgendes Struktogramm vorliegen und bin mir nicht sicher, wie ich es auf das Array anwenden soll, bzw. ob ich es richtig verstanden habe.

Anhang anzeigen 12702

Anhang anzeigen 12701

In der ersten Zeile soll ich eine Schleife machen, die von n (hier: 6) bis 2 läuft mit der Zählervariable i
in der zweiten Zeile soll ich eine Schleife machen, die von 2 bis i (hier: 6) läuft mit der Zählervariable j
Die dritte Zeile ist eine if-Abfrage. Die Bedingung von dieser Abfrage ist A[j-1] >= A[j].

Ich beginne damit: A [1] >= A [2] --> Bedingung ist erfüllt, da Z >=A. Das heißt ich tausche A[1] mit A[2], also sieht das Array jetzt folgendermaßen aus: W Z O E L F.
Dann prüfe ich: A[2] >= A [3] --> Bedingung ist erfüllt, da Z >=O. Das heißt ich tausche A[2] mit A[3], also sieht das Array jetzt folgendermaßen aus: W O Z E L F.

Das ganze führe ich bis zum Schluss durch und komme dann auf: W O E L F Z.

Habe ich den Algorithmus damit richtig angewandt oder ist da ein Denkfehler enthalen? Irgendwie bin ich mir da so unsicher.
Wie viele Schritte hast du durchgeführt? Du hast glaub du hast nur den Fall für i=n gemacht, aber die äußere Schleife läuft ja auch noch.

Also vergleiche: 1 mit 2, 2 mit 3, 3 mit 4, 4 mit 5, 5 mit 6 und dann vergleiche 1 mit 2, 2 mit 3, 3 mit 4, 4 mit 5 usw.
 

Susi123

Aktives Mitglied
Ich habe wohl die äußere Schleife nicht bedacht und nur 4 Vergleiche gemacht


Ich beginne damit: A [1] >= A [2] --> Bedingung ist erfüllt, da Z >=A. Das heißt ich tausche A[1] mit A[2], also sieht das Array jetzt folgendermaßen aus: W Z O E L F.
Dann prüfe ich: A[2] >= A [3] --> Bedingung ist erfüllt, da Z >=O. Das heißt ich tausche A[2] mit A[3], also sieht das Array jetzt folgendermaßen aus: W O Z E L F.
Das ganze führe ich bis zum Schluss durch und komme dann auf: W O E L F Z.

Danach geht es dann weiter A [1] mit A [2] verglichen...
A [2] mit A [3] verglichen.
A [3] mit A [4] verglichen.
A [4] mit A [5] verglichen.
A [5 mit A [6] verglichen.

Dann wieder von vorne...
weitere 5 Vergleiche (Sorry für die komplizierte schrittweise Darstellung)
Dann sieht das so aus
ZWOELF

WZOELF
WOZELF
WOEZLF
WOELZF
WOELFZ

OWELFZ
OEWLFZ
OELWFZ
OELFWZ
OELFWZ

EOLFWZ
ELOFWZ
ELFOWZ
ELFOWZ
ELFOWZ

ELFOWZ
EFLOWZ
EFLOWZ
EFLOWZ
EFLOWZ

EFLOWZ
EFLOWZ
EFLOWZ
EFLOWZ
EFLOWZ

Damit habe ich dann bei 6 Elementen insgesamt 5 * 5 Vergleiche. Stimmt die Berechnung?

Überleg mal, was (und warum) passiert, wenn zwei gleiche Buchstaben aufeinander folgen...
Dann würde die beiden Buchstaben vertauscht werden, was eigentlich nicht passieren darf, wenn der Algorithmus stabil sein soll. Aber wie ändere ich das, sodass der Sortieralgorithmus stabil bleibt.
 
K

kneitzel

Gast
Nein, schau noch einmal genau auf die innere Schleife. Bis wohin läuft diese?
Also wie viele Durchgänge hat der erste Durchlauf?
Wie viele Durchgänge hat der zweite Durchlauf?#
u.s.w.
 

Susi123

Aktives Mitglied
Ahhh...ich check es nicht.
Die äußere Schleife läuft von n bis 2. Also hier von 6 bis 2. Das heißt: 6, 5, 4, 3, 2 --> Das sind 5 Elemente
Die innere Schleife läuft von 2 bis n. Also hier von 2 bis 6. Das heißt: 2, 3, 4, 5, 6 --> Das sind 5 Elemente.
Aber da muss wohl irgendwo ein Denkfehler sein.
 

Susi123

Aktives Mitglied
Von 2 bis i. Aber was ist i? Ich dachte i = n?
Die Struktogramm überfordert mich völlig. Hab bisher noch nie so etwas gesehen und soll jetzt das erste Mal eins verstehen und anwenden.
 
K

kneitzel

Gast
Nein, i ist doch die Zählvariable der äußeren Schleife und ändert sich damit von Durchlauf zu Durchlauf.
 

Susi123

Aktives Mitglied
Danke für die Rückmeldung und die Bemühungen. Leider komme ich damit nicht weiter. Was bedeutet das in der Umsetzung? Was muss ich mit womit vergleichen und in welcher Reihenfolge? Ich weiß nicht mal was Schleife und Zählvariable wirklich bedeuten.
 
K

kneitzel

Gast
Dann betrachten wir nur die äußere Schleife: "for i := n down to 2"

Dies bedeutet, dass wir eine Schleife haben, es soll also etwas mehrfach wiederholt werden. Und zwar soll dabei i (die Zählvariable, also die Variable, in der man zählt) von n runter bis auf 2 gezählt werden.
Also erst ist i = n. Beim nächsten Durchgang ist i = n-1, dann n-2 u.s.w. bis i=2 ist. Dann hört die Schleife auf.
 

mihe7

Top Contributor
Und für jedes i führst Du jetzt die innere Schleife aus, die ja nur bis i zählt.

Code:
i=6
  j=2
  j=3
  j=4
  j=5
  j=6 (=i)

i=5
  j=2
  j=3
  j=4
  j=5 (=i)

i=4
  j=2
  j=3
  j=4 (=i)

usw.
 

Susi123

Aktives Mitglied
Ah danke... jetzt bin ich wieder dabei :)

Ich vergleiche also
i = 6, Elemente 1-2, 2-3, 3-4, 4-5, 5-6
i = 5, Elemente 1-2, 2-3, 3-4, 4-5
i = 4, Elemente 1-2, 2-3, 3-4
i = 3, Elemente 1-2, 2-3
i = 2, Elemente 1-2

Also habe ich bei 6 Elementen 15 Vergleiche.
 

Susi123

Aktives Mitglied
Vielen herzlichen Dank für deine konstruktive Hilfe.

Hat noch jemand eine Idee, wie man allgemein beschreiben kann, wie viele Vergleiche notwendig sind und was geändert werden muss, damit der Algorithmus stabil arbeitet?
 
K

kneitzel

Gast
Was für Gedanken hast Du Dir denn dazu gemacht? Bezüglich dem letzten Punkt ist ja schon die Problematik in der Aufgabe beschrieben worden.... Evtl. spielst Du den Algorithmus selbst ein paar Mal auf einem Zettel durch....
 

mihe7

Top Contributor
was geändert werden muss, damit der Algorithmus stabil arbeitet?
Dann würde die beiden Buchstaben vertauscht werden, was eigentlich nicht passieren darf, wenn der Algorithmus stabil sein soll. Aber wie ändere ich das, sodass der Sortieralgorithmus stabil bleibt.
Du hast doch die Lösung schon fast hingeschrieben :) Welche Stelle im Algorithmus sorgt denn dafür, dass es zu einem Vertauschen gleicher Buchstaben kommt?
 

Susi123

Aktives Mitglied
Das "größer gleich" führt dazu, dass auch gleiche Elemente vertauscht werden. Also sollte man das "gleich" weglassen und der Algorithmus würde dann stabil arbeiten?

Bei 6 Elementen bin ich auf 15 Vergleiche gekommen. 5+4+3+2+1 = 15
Bei 5 Elementen komme ich auf 4+3+2+1 = 10 Vergleiche.
Bei 4 Elementen komme ich dann auf 3+2+1= 6 Vergleiche.
Bei 7 Elementen 6+5+4+3+2+1 = 21 Vergleiche.

Kann man das dann allgemein damit beschreiben?
12713
 

mihe7

Top Contributor
Das "größer gleich" führt dazu, dass auch gleiche Elemente vertauscht werden. Also sollte man das "gleich" weglassen und der Algorithmus würde dann stabil arbeiten?
Probier's aus :) Auf Papier, dann kannst Du den Buchstaben einen Index geben, also z. B. BE1E2RE3

Kann man das dann allgemein damit beschreiben?

Nein, so kann man das nicht schreiben. Eine Summe von n=1 bis n-1 (also bis 0) über n wäre 0. Du bräuchtest eine Summe von i=1 bis n-1 über i. Das Ergebnis ist der kleine Gauss: (n-1)*n/2 = (n² - n)/2.

Beispiel: (7² - 7)/2 = 42/2 = 21

Normalerweise interessiert aber nicht die genaue Anzahl der Vergleiche, sondern eine Größenordnung, d. h. die Zeitkomplexität des Algorithmus. Für diese wird die O-Notation verwendet: Die Zahl der Vergleiche liegt in O(n²), wächst also nicht wesentlich schneller als n². Der Algorithmus hat somit eine quadratische Laufzeit.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Sortieralgorithmus Java Basics - Anfänger-Themen 17
2 Erste Schritte Sortieralgorithmus Array Java Basics - Anfänger-Themen 6
D Sortieralgorithmus mit Systemzeit messen Java Basics - Anfänger-Themen 7
K Sortieralgorithmus Java Basics - Anfänger-Themen 10
Messoras Sortieralgorithmus graphisch darstellen Java Basics - Anfänger-Themen 6
M BubbleSort (Sortieralgorithmus) Java Basics - Anfänger-Themen 28
C Sortieralgorithmus grafisch darstellen Java Basics - Anfänger-Themen 3
Streeber Sortieralgorithmus Java Basics - Anfänger-Themen 8
F Sortieralgorithmus von rekursiv auf iterativ? Java Basics - Anfänger-Themen 21
G Sortieralgorithmus mit Rekursion funktioniert nicht Java Basics - Anfänger-Themen 26
S Hilfe zu einfachstem Sortieralgorithmus gesucht Java Basics - Anfänger-Themen 2
N sortieralgorithmus Java Basics - Anfänger-Themen 32
R Frage zu Sortieralgorithmus Java Basics - Anfänger-Themen 13
Jere58 Aufgabe zu Mustern Java Basics - Anfänger-Themen 1
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Mikejr Java Berg aufgabe Java Basics - Anfänger-Themen 6
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
T Informatik Studium Aufgabe Java Basics - Anfänger-Themen 4
T Aufgabe Informatik Studium Java Basics - Anfänger-Themen 10
I matrix aufgabe Java Basics - Anfänger-Themen 22
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
9 Aufgabe Bruttorechner Java Basics - Anfänger-Themen 14
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
J boolean aufgabe Java Basics - Anfänger-Themen 9
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
StevenGG Aufgabe im Studium Java Basics - Anfänger-Themen 36
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
S Schulaufgabe - verstehe leider die Aufgabe nicht Java Basics - Anfänger-Themen 4
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
R Eclipse Aufgabe Java Basics - Anfänger-Themen 4
J OOP-Aufgabe Java Basics - Anfänger-Themen 15
Helix19 Informatik Grundkurs (Haus-)Aufgabe Java Basics - Anfänger-Themen 5
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
TimoN11 Java spezielle Suchprobleme - Aufgabe Java Basics - Anfänger-Themen 5
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 18
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
C Rechnungen-Aufgabe Java Basics - Anfänger-Themen 18
C Biene-Aufgabe Java Basics - Anfänger-Themen 2
K Algorithmen und Datenstrukturen Programmier Aufgabe Java Basics - Anfänger-Themen 10
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
B Methoden Ausgeben Aufgabe Java Basics - Anfänger-Themen 15
M Lösung Aufgabe - Java Programmiren lernen für Dummies Java Basics - Anfänger-Themen 11
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
I Methoden char Array Aufgabe (bitte hierbei um Hilfe) Java Basics - Anfänger-Themen 3
F Aufgabe: Abstand von einem Punkt zu einem anderen Punkt Java Basics - Anfänger-Themen 10
T Aufgabe zum Verschlüsselungsalgorithmus Java Basics - Anfänger-Themen 11
J Erste Schritte Aufgabe Java Basics - Anfänger-Themen 24
T Methoden BinaryTree transformieren Aufgabe Java Basics - Anfänger-Themen 36
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
A Aufgabe: Gleitkommazahlen Java Basics - Anfänger-Themen 3
A Java-Programmierungs Aufgabe Java Basics - Anfänger-Themen 2
U Aufgabe zu Kontrollstrukturen Java Basics - Anfänger-Themen 8
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
J Aufgabe als Feuertaufe Java Basics - Anfänger-Themen 8
S Unbedingte hilfe bei Java Aufgabe [Schleife / Zinsrechnung] Java Basics - Anfänger-Themen 14
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
H aufgabe 4 Java Basics - Anfänger-Themen 297
M Hilfe bei Projektorientierungs-Aufgabe !! Java Basics - Anfänger-Themen 3
J Java Starthilfe Verständnisfrage Aufgabe Java Basics - Anfänger-Themen 2
H java aufgabe Java Basics - Anfänger-Themen 7
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
H was verlangt die aufgabe ? Java Basics - Anfänger-Themen 10
H java aufgabe Java Basics - Anfänger-Themen 68
H java aufgabe Java Basics - Anfänger-Themen 25
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
R Java Aufgabe (Teilbarkeit) Java Basics - Anfänger-Themen 7
H java aufgabe Java Basics - Anfänger-Themen 44
H java aufgabe Java Basics - Anfänger-Themen 7
H java string aufgabe Java Basics - Anfänger-Themen 10
H array aufgabe Java Basics - Anfänger-Themen 13
D Erste Schritte Lösen dieser Aufgabe, Hilfe! Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben