Merge-Algorithmus

Jw456

Top Contributor
meine Datenstruktur professorin hat mal versucht einen eigenen merge zu schreiben und konnte es nach 5 stunden lösen

also denk dir nichts dabei..
Der TE will doch was lernnen. Da finde ich so eine Antwort nicht hilfreich.

Wie schon gesagt wurde hat er ja schon eine Methode die zwei sortierte Arrays mergen kann. Also was liegt da näher als dise in der Methode wo vier Arrays verbunden werden sollen zu benutzen.

Warum alles in einer Methode machen.
 

KonradN

Super-Moderator
Mitarbeiter
Habe die Methode schon 3 mal neu geschrieben und das hat nie funktioniert... Nerven sind am Ende
Also ggf. hilft da, erst einmal etwas Abstand. Man kann gewisse Dinge nicht erzwingen.

Und wenn man dann mit ruhigen Kopf heran geht, dann hilft aus meiner Sicht ausschließlich:
a) Den Ablauf im Detail durchgehen. In der Regel ist eine graphische Darstellung am sinnvollsten. Spiel den Prozess durch!
b) Beschreibe den Prozess. Dabei unterteilst Du den Prozess in Teilprozesse! Das ermöglichst Dir, den Überblick zu behalten! Sowohl jetzt als auch dann später bei der Umsetzung.
c) Dann - und erst dann - schreibst Du das Programm

Geh diese Schritte durch. Und wirklich diese Schritte. Das ist und bleibt der Weg, wie man einen Sachverhalt entwickeln kann. Dieser Prozess wird immer, aber auch wirklich immer, angewendet von mir. Ich schreibe in der Regel nicht eine Zeile Code ohne eben genau diese Schritte! Das läuft meist nur im Kopf ab, aber sobald die Sachverhalte etwas komplizierter werden, dann brauche ich auch Skizzen und ähnliches. Schmierzettel sind ein wichtiges Arbeitsgerät von mir!

Daher wäre mein Ratschlag, endlich genau diese Arbeitsweise zu adaptieren. Also beschreibe genau, was Du für eine Eingabe bekommst (Vermutlich die 5 Arrays - 4 Source Arrays mit Grenzen, die zu behandeln sind und ein Ziel-Array mit Grenzen, wo die Daten hin sollen).
Und dann beschreibe das Vorgehen!

Ich weiss nicht, wie weit ihr mit den Klassen seid - es wird deutlich einfacher, wenn man eigene Klassen schreibt, die gewisse Dinge kapseln. Ein Array mit den start und ende Indices gehören zusammen und die könnte man z.B., Kapseln. Dieses Kapseln vereinfacht es, da man hier jetzt Objekte erstellt, mit denen man arbeiten kann. Es wird also deutlich weniger abstrakt. Wenn das bei Euch nicht geht, dann machst Du es nicht bei der Umsetzung - aber bei der Visualisierung nutzt Du es dennoch. Dann hast Du Sourcen und das sind halt Arrays mit Start und Ende. Und da Du nacheinander die Elemente lesen willst, hast Du da dann halt einen Index "current" oder so. Damit kannst Du dann arbeiten.

Und dann wird es sehr einfach. Der bisherige merge Algorithmus mit den zwei Elementen war einfach:

1. So lange beide Source Arrays noch zu verarbeitende Elemente haben:
1.1 Vergleiche die nächsten beiden Elemente, das kleinere Element verarbeitest Du.
2. Übertrage die restlichen Elemente der beiden Source Arrays.

Element Verarbeiten ist dabei:
1. Das Element merken, den index des Source Arrays erhöhen
2. Das gemerkte Element im Ziel einfügen und den index des Ziel-Arrays erhöhen.

Das ist die ganze Beschreibung.

Und nun hast Du mehrere Optionen, wie Du vorgehen kannst:
a) Für beliebige Anzahl von Merges kann man einfach in einer Schleife so lange das kleinste Elemente aller Sourcen suchen, bis es keines mehr gibt. Das kleinste Element würde dann durch versetzen des jeweiligen Indices entnehmen und im Ziel einfügen.
b) 4 = 2*2 - Du kannst also einfach den bisherigen Algorithmus einfach 3 mal anwenden.

Beides ist nicht besonders kompliziert und die Beschreibung ist ja schon genannt. Das muss man dann nur noch verfeinern.

Wichtig ist ggf. das Handling. Dazu muss man dann bei beiden Dingen etwas machen.

Bei a) Da Du hier vermutlich alles als Parameter hast, ist das sehr schwer zu handhaben. Wenn du 4 Sourcen hast jeweils mit array, linker index, rechter index, dann kannst Du damit nur schlecht arbeiten in Schleifen und so. Daher kannst Du das einfach in ein Array packen. Also erstell ein Array von Arrays und pack da die Source Arrays rein. Ein Array für die start Indices und ein Array für die Ende Indices. Schon kannst Du da mit Schleifen drüber arbeiten und z.B. feststellen, an welcher Position das nächste kleinste Element ist. Dieses kann man dann auslesen, den Index verändern u.s.w.

Bei b) Hier ist das Problem ggf. dass Du ein Zielbereich für die Merges brauchst. Das ist bei der Lösung unschön. Du musst also ein oder zwei Arrays erstellen, in die du zuerst merged. Dann merged du von diesen in den Zielbereich. Ob ein Array mit zwei Teilbereichen oder zwei Arrays ist dabei vollkommen egal.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
CptK Best Practice Merge-Sort als Baum darstellen Java Basics - Anfänger-Themen 3
B Merge-Sort Analyse Java Basics - Anfänger-Themen 27
K Algorithmus entwickeln Java Basics - Anfänger-Themen 1
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
H Minimax Algorithmus in Tic Tac Toe Java Basics - Anfänger-Themen 3
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
ohneInformatik; Trockentest Algorithmus, mathematischen Zusammenhang angeben Java Basics - Anfänger-Themen 3
M Minimax-Algorithmus Java Basics - Anfänger-Themen 17
mervanpolat Binary Search Algorithmus ausführen Java Basics - Anfänger-Themen 1
J Rekursiver Algorithmus Java Basics - Anfänger-Themen 9
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
C Ein Algorithmus soll schneller werden Java Basics - Anfänger-Themen 24
D Dijkstra Algorithmus Hilfe!! Java Basics - Anfänger-Themen 9
U Den Kuchen aufteilen - aber wie? (Rebalancing-Algorithmus) Java Basics - Anfänger-Themen 14
s_1895 Pseudocode Naiver Algorithmus Java Basics - Anfänger-Themen 17
H String verschlüsseln - eigener Algorithmus Java Basics - Anfänger-Themen 104
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
Düsseldorf2002 Testen meines Algorithmus Java Basics - Anfänger-Themen 1
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Algorithmus java searchAll IKey Java Basics - Anfänger-Themen 4
S Algorithmus Datensätze einfügen wenn... Java Basics - Anfänger-Themen 26
KogoroMori21 MergeSort Algorithmus Java Basics - Anfänger-Themen 2
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
fendix Compiler-Fehler Algorithmus zur Bestimmung von Primzahlen Java Basics - Anfänger-Themen 7
S Algorithmus (reelle Zahl <65536 von dezimal zu dual) max. 10 Nachkommastellen Java Basics - Anfänger-Themen 4
G Algorithmus Graphen Java Basics - Anfänger-Themen 10
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
N Selection Algorithmus: Methode wird nicht erkannt (BlueJ) Java Basics - Anfänger-Themen 3
U Meinung zum Dijkstra Algorithmus Java Basics - Anfänger-Themen 6
U Dijkstra Algorithmus Laufzeit Java Basics - Anfänger-Themen 3
L Math.exp also eigenen Algorithmus Java Basics - Anfänger-Themen 2
Kirby.exe Algorithmus entwickeln Java Basics - Anfänger-Themen 37
M Algorithmus Max-Heap? Java Basics - Anfänger-Themen 3
I Labyrinth auf der Basis eines rekursiven Algorithmus Java Basics - Anfänger-Themen 27
CptK Best Practice Algorithmus nach jedem Schritt zum Visualisieren pausieren Java Basics - Anfänger-Themen 3
A Algorithmus effizienter machen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
O Labyrinth Algorithmus Java Basics - Anfänger-Themen 3
G Quicksort Algorithmus Java Basics - Anfänger-Themen 12
S Binäre-Suche Algorithmus Java Basics - Anfänger-Themen 1
D Algorithmus in Pseudocode mit log2(n) Operationen erstellen Java Basics - Anfänger-Themen 3
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
H aufgabe java luhn algorithmus Java Basics - Anfänger-Themen 10
A Datenstruktur für Savings Algorithmus und Planung von kleinen Programmierprojekten Java Basics - Anfänger-Themen 1
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
S Dijkstra Algorithmus funktioniert nicht Java Basics - Anfänger-Themen 4
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
S Problem mit einem rekursivem FloodFill Algorithmus Java Basics - Anfänger-Themen 62
B Algorithmus Square und Multiply Java Basics - Anfänger-Themen 3
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
D Frage Boyer-Moore Algorithmus Java Basics - Anfänger-Themen 7
M Komplexität Algorithmus Java Basics - Anfänger-Themen 8
H Zeichen im algorithmus Java Basics - Anfänger-Themen 4
B Code Verständnisfragen - FLoyd Warshall Algorithmus Java Basics - Anfänger-Themen 1
B Algorithmus zum entmischen einer Zahlenfolge Java Basics - Anfänger-Themen 15
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
T Algorithmus zur Überprüfung eines binären Suchbaums Java Basics - Anfänger-Themen 2
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
M Simpler Algorithmus läuft extrem langsam. Java Basics - Anfänger-Themen 3
K Erste Schritte Brute Force Algorithmus Java Basics - Anfänger-Themen 2
L Frage zu BubbleSort Algorithmus Java Basics - Anfänger-Themen 2
B gibt es ein Stundenplan-Algorithmus? Java Basics - Anfänger-Themen 11
O Algorithmus-Problem Java Basics - Anfänger-Themen 5
P Euklidischer Algorithmus Java Basics - Anfänger-Themen 9
L Greates Commong Dividend - euklidischer Algorithmus, modulos not positive Java Basics - Anfänger-Themen 5
J Euklidischer Algorithmus Java Basics - Anfänger-Themen 1
S Quicksort Algorithmus Java Basics - Anfänger-Themen 2
S GraphNode --- Dijkstra Algorithmus : NullPointerException Java Basics - Anfänger-Themen 1
B Rekursive Algorithmus schreiben Java Basics - Anfänger-Themen 8
V Algorithmus in einer Methode ausführen Java Basics - Anfänger-Themen 3
M Implementierung des Knuth-Morris-Pratt-Algorithmus Java Basics - Anfänger-Themen 0
M Dijkstras Algorithmus Java Basics - Anfänger-Themen 5
S Zusammenhang Datenstruktur/Algorithmus Java Basics - Anfänger-Themen 1
M Simulation - Algorithmus Java Basics - Anfänger-Themen 3
F Erste Schritte Hilfe beim Algorithmus finden Java Basics - Anfänger-Themen 8
D Algorithmus für Punkte auf einem Kreis Java Basics - Anfänger-Themen 0
D Algorithmus zu gegebener Laufzeit implementieren Java Basics - Anfänger-Themen 1
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
C Ideen für einen Algorithmus Java Basics - Anfänger-Themen 1
F Best Practice Algorithmus optimieren - Binaeruhr Java Basics - Anfänger-Themen 2
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
L Welcher Algorithmus ist das ? Java Basics - Anfänger-Themen 9
J Rekursiver Horner-Schema-Algorithmus - Verstehe ich ihn richtig? Java Basics - Anfänger-Themen 2
O Java Zufalls-Verteil-Algorithmus Java Basics - Anfänger-Themen 3
P ganz simpler algorithmus Java Basics - Anfänger-Themen 3
C Sortieren ohne Algorithmus Java Basics - Anfänger-Themen 8
J Algorithmus: Grad von floating zu Grad/Minute/Sekunde Java Basics - Anfänger-Themen 3
A Text Verschriebung/Algorithmus(?) Java Basics - Anfänger-Themen 8
R Rekursionsformel für Laufzeit von Algorithmus Java Basics - Anfänger-Themen 3
E Algorithmus für kart. Produkt: als int [] Feld repräsentiert Java Basics - Anfänger-Themen 10
U Peterson Algorithmus Java Basics - Anfänger-Themen 13
algebraiker Collections Bräuchte Hilfe bei dem Algorithmus - LinkedHashMap Java Basics - Anfänger-Themen 2
S A* Path Algorithmus in Java schon vorhanden Java Basics - Anfänger-Themen 3
S Bubble Sort Algorithmus Java Basics - Anfänger-Themen 3

Ähnliche Java Themen


Oben