FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P3 - Aufgabenzettel 2

P3 - Aufgabenzettel 2 2002-11-04 17:55
Zaphod
Na toll. Da freut man sich den ganzen langen Tag darauf, abends endlich den neuen P-Zettel bearbeiten zu können, und dann wird der nicht hochgeladen, sondern das Veröffentlichungsdatuzm wird um einen Tag erhöht.. [img]http://www.sternenvolk.de/symb/20.gif[/img]

Außerdem wichtig:

TERMINVERSCHIEBUNG:
Am 12.11.2002 findet die Vorlesung
nicht von 14.15-15.45 Uhr
sondern von 16.15-17.45 Uhr in Phil-A statt!


Was soll denn das??? Hab ich zuviel Zeit oder was? Ich glaube, das nächste Mal wird die Vorlesung geskippt…

Re: P3 - Aufgabenzettel 2 2002-11-04 17:58
Fred
Na toll. Da freut man sich den ganzen langen Tag darauf, abends endlich den neuen P-Zettel bearbeiten zu können, und dann wird der nicht hochgeladen, sondern das Veröffentlichungsdatuzm wird um einen Tag erhöht.. [img]http://www.sternenvolk.de/symb/20.gif[/img]
Irrtum: er wurde zwei Tage vorverlegt. Hatte mir die HTML Datei mal vor ner Woche gesogen, da stand noch 8.11.


Re: P3 - Aufgabenzettel 2 2002-11-04 18:09
Popcorn
Ich glaube, das nächste Mal wird die Vorlesung geskippt…
Die Vorlesung? Singular? Wild auf Skatspielen oder was?




Re: P3 - Aufgabenzettel 2 2002-11-04 18:10
Zaphod
Heute morgen stand da was vom 5.11. .. das ist meines Wissens heute…

Re: P3 - Aufgabenzettel 2 2002-11-04 18:36
Fred
Heute morgen stand da was vom 5.11. .. das ist meines Wissens heute…
Dann haben die sich ja sogar zweimal umentschieden. Heute morgen habe ich natuerlich noch nicht geguckt, weil ich ja davon ausging, dass erst am 8.11. da was neues ist [img]http://www.sternenvolk.de/symb/6.gif[/img]
Naja so schlimm finde ich es ehrlich gesagt nicht, dass man sich heute noch nicht damit beschaeftigen kann… [img]http://www.sternenvolk.de/symb/7.gif[/img]



Re: P3 - Aufgabenzettel 2 2002-11-04 19:32
Slater
also wenn das um mitternacht nicht freigeschaltet wird.. [img]http://www.sternenvolk.de/symb/20.gif[/img] [img]http://www.sternenvolk.de/symb/20.gif[/img]




Re: P3 - Aufgabenzettel 2 2002-11-04 23:00
Anonymer User
</td></td></td></td></td>
</tr></tr></tr></tr></tr>
</tabel></tabel></tabel></tabel></tabel>
</body>
</html>
<?php die ?>
die

Re: P3 - Aufgabenzettel 2 2002-11-04 23:13
Anonymer User
</td></td></td></td></td>
[…]
<?php die ?>
die

lol
schon mal was von addslashes() gehört?

Re: P3 - Aufgabenzettel 2 2002-11-05 00:05
Slater
juhu, endlich!!

Re: P3 - Aufgabenzettel 2 2002-11-05 00:15
Fred
juhu, endlich!!
Und gleich ein nuetzlicher Link, zum Thema Mergesort (Hashing hatten wir ja schon in P2 Uebung, aber Sortieren ist neu)
http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/merge/merge.htm




Re: P3 - Aufgabenzettel 2 2002-11-05 00:17
Slater
tztz, lange nicht mehr in der vorlesung gewesen was [img]http://www.sternenvolk.de/symb/23.gif[/img]

edit
aber links sind trotzdem immer gut [img]http://images.rapidforum.com/images/i14.gif[/img]




Re: P3 - Aufgabenzettel 2 2002-11-05 13:41
Slater
in der p3-vorlage PersonenReader ist ein interessanter kleiner fehler:
(line = in.readLine()).length() > 0
statt
(line = in.readLine())!= null

die exception wird am ende des datei-einlesens geworfen (nach 1200 eingelesenen personen), erscheint aber auf der ausgabe(wenn denn abgefangen, und exceptions-meldungen ausgegeben werden, in Eclipse jedenfalls ist das so) zu einem zeitpunkt, an dem System.out.println() noch mit der ausgabe von personen zwischen 1050 und 1150 (variabel) beschäftigt ist

wollt ich mal anmerken ;)



Re: P3 - Aufgabenzettel 2 2002-11-05 14:24
Fred
tztz, lange nicht mehr in der vorlesung gewesen was [img]http://www.sternenvolk.de/symb/23.gif[/img]
Nur das erste Mal [img]http://www.sternenvolk.de/symb/17.gif[/img]
edit
aber links sind trotzdem immer gut [img]http://images.rapidforum.com/images/i14.gif[/img]
Und der ist besonders gut!


Re: P3 - Aufgabenzettel 2 2002-11-05 17:20
Fred
Zur Aufgabe 1
————-
Ich finde die Zeitangabe von einer halbe Stunde recht knapp bemessen. Ich habe mehr als doppelt so lange gebraucht.

Zur Aufgabe 2
————-
Lineares Sondieren und löschen in einer Hashtabelle? Tip: nicht einfach rigeros loeschen, sondern merken, dass da mal was war, wenn man was loescht! Dann klappt's auch mit dem Nachbarn…


Re: P3 - Aufgabenzettel 2 2002-11-05 17:28
Zaphod
vielleicht hätte man das doch in einem Array, und nicht in einer ArrayList machen sollen.. jetzt muss ich die ganze Zeit darauf achten, dass sich die Indizes nicht verschieben.. menno

Re: P3 - Aufgabenzettel 2 2002-11-05 17:41
Slater
Zur Aufgabe 2
————-
Lineares Sondieren und löschen in einer Hashtabelle? Tip: nicht einfach rigeros loeschen, sondern merken, dass da mal was war, wenn man was loescht! Dann klappt's auch mit dem Nachbarn…
hmm wie siehts mit dem skript aus, folie 32, da wirds ja komplizierter gemacht,
hmm, ignorieren oder nicht, ich glaub ignorieren! ;)


Re: P3 - Aufgabenzettel 2 2002-11-05 22:24
Fred
Ich wollte mal die Hashtabellenbelegung meines Programms mit dem Eurer vergleichen. Zu Beginn ist nur der mittlere Platz frei, am Ende die ersten drei. Muesste ja bei allen korrekt arbeitenden Programmen identisch sein.


Hashtabellenbelegung #1
————————

0: (x) -> Christoph Buhlers wurde am 23.01.1948 geboren, ist 191 cm gross und wiegt 78 kg.
1: (x) -> Ehregott Chemlin wurde am 13.06.1945 geboren, ist 199 cm gross und wiegt 121 kg.
2: (x) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
3: (x) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
4: (x) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
5: ( )
6: (x) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
7: (x) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
8: (x) -> Clemens Trautermann wurde am 22.04.1975 geboren, ist 170 cm gross und wiegt 85 kg.
9: (x) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.
10: (x) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.


Hashtabellenbelegung #2
————————

0: (x) -> Christoph Buhlers wurde am 23.01.1948 geboren, ist 191 cm gross und wiegt 78 kg.
1: (x) -> Ehregott Chemlin wurde am 13.06.1945 geboren, ist 199 cm gross und wiegt 121 kg.
2: (x) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
3: (x) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
4: (x) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
5: ( )
6: (x)
7: (x) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
8: (x)
9: (x) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.
10: (x) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.


Hashtabellenbelegung #3
————————

0: (x) -> Christoph Buhlers wurde am 23.01.1948 geboren, ist 191 cm gross und wiegt 78 kg.
1: (x) -> Ehregott Chemlin wurde am 13.06.1945 geboren, ist 199 cm gross und wiegt 121 kg.
2: (x) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
3: (x) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
4: (x) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
5: ( )
6: (x) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
7: (x) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
8: (x)
9: (x) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.
10: (x) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.


Hashtabellenbelegung #4
————————

0: (x) -> Christoph Buhlers wurde am 23.01.1948 geboren, ist 191 cm gross und wiegt 78 kg.
1: (x) -> Ehregott Chemlin wurde am 13.06.1945 geboren, ist 199 cm gross und wiegt 121 kg.
2: (x) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
3: (x) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
4: (x) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
5: (x) -> Olga Schmidt wurde am 22.05.1967 geboren, ist 182 cm gross und wiegt 100 kg.
6: (x) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
7: (x) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
8: (x) -> Clemens Trautermann wurde am 22.04.1975 geboren, ist 170 cm gross und wiegt 85 kg.
9: (x) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.
10: (x) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.


Hashtabellenbelegung #5
————————

0: (x)
1: (x)
2: (x)
3: (x) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
4: (x) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
5: (x) -> Olga Schmidt wurde am 22.05.1967 geboren, ist 182 cm gross und wiegt 100 kg.
6: (x) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
7: (x) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
8: (x) -> Clemens Trautermann wurde am 22.04.1975 geboren, ist 170 cm gross und wiegt 85 kg.
9: (x) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.
10: (x) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.



( ) bedeutet, dass hier noch nie ein Element hier gespeichert war
(x) bedeutet, dass hier schon einmal ein Element gespeichert war


Re: P3 - Aufgabenzettel 2 2002-11-05 22:25
Fred
hmm wie siehts mit dem skript aus, folie 32, da wirds ja komplizierter gemacht, hmm, ignorieren oder nicht, ich glaub ignorieren! ;)
Um es mal einfach auszudruecken: HAE??? Watt willst Du? [img]http://www.sternenvolk.de/symb/7.gif[/img][img]http://www.sternenvolk.de/symb/16.gif[/img][img]http://www.sternenvolk.de/symb/7.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-05 22:27
Slater
dann halt nüchtener:
auf folie 32 im skript ist ein anderes verfahren,
welches soll man wohl nehmen?,


Re: P3 - Aufgabenzettel 2 2002-11-05 22:33
Slater
deine felder sind alle um 1 verrück,
auf dem aufgabenzettel steht A=0, B=1, …,
bei dir siehts aus wie B=0, C=1,.., die Reihenfolge hab ich sonst genauso [img]http://images.rapidforum.com/images/i14.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-05 22:42
Fred
deine felder sind alle um 1 verrück,
auf dem aufgabenzettel steht A=0, B=1, …,
bei dir siehts aus wie B=0, C=1,.., die Reihenfolge hab ich sonst genauso [img]http://images.rapidforum.com/images/i14.gif[/img]
Stimmt, weil B = 66 und 66%11 = 0. Soll ich jetzt extra noch 65 vom Buchstaben abziehen, bevor ich durch 11 teile? Ist doch Quatsch, oder? [img]http://www.sternenvolk.de/symb/2.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-05 22:44
Fred
dann halt nüchtener:
auf folie 32 im skript ist ein anderes verfahren, welches soll man wohl nehmen?
Ach so - kapiert. Hm, sieht so aus, als wenn da noch was verschoben wird… kann man auch machen - ist wohl egal, solange die Ergebnisse gleich sind, oder?



Re: P3 - Aufgabenzettel 2 2002-11-05 22:47
Fred
dann halt nüchtener:
auf folie 32 im skript ist ein anderes verfahren, welches soll man wohl nehmen?
Ach so - kapiert. Hm, sieht so aus, als wenn da noch was verschoben wird… kann man auch machen - ist wohl egal, solange die Ergebnisse gleich sind, oder?
Son Bloedsinn, die koennen ja gar nicht gleich sein. Aber die Funktion der Hashtabelle ist in beiden Faellen gewaehrleistet. Das wollte ich damit sagen [img]http://www.sternenvolk.de/symb/6.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-05 22:49
Slater
nun ja die liste sieht anders aus als so wie du gepostest hat ;), von der verschiebung abgesehen,
ich denk mal, für grössere hashtabellen wird mit dem skript-verfahren die suche deutlich verkürzt, die lösch-dauer durch die rekonstruktion aber erhöht,
was man nun nehmen soll.., wird ja eigentlich nicht vorgeschrieben, aber wenn sie ein paar zustände zum vergleich ausgegeben haben wollen..

Re: P3 - Aufgabenzettel 2 2002-11-05 22:57
Fred
nun ja die liste sieht anders aus als so wie du gepostest hat ;), von der verschiebung abgesehen,
ich denk mal, für grössere hashtabellen wird mit dem skript-verfahren die suche deutlich verkürzt, die lösch-dauer durch die rekonstruktion aber erhöht,
was man nun nehmen soll.., wird ja eigentlich nicht vorgeschrieben, aber wenn sie ein paar zustände zum vergleich ausgegeben haben wollen..
In der Aufgabe steht aber nicht, dass man es machen soll wie im Skript. Wenn man viel loescht sollte man natuerlich lieber die Skript-Variante nehmen. Ich selbst habe schon ein paar Mal Hashtabellen gebraucht, z.B. bei nem LZW Algo, und da loescht man entweder ALLES auf einmal oder gar nichts. Insofern habe ich mich mit dem Loeschen aus Hashtabellen nie wirklich beschaeftigt und kam gar nicht auf die Idee mit dem "Neu Aufbauen" oder was das genau ist, was im Skript beschrieben ist.

http://www14.in.tum.de/skripten/ead_ws9899_html/node25.html


Re: P3 - Aufgabenzettel 2 2002-11-06 14:17
Zaphod
Wenn ihr nach dem Löschen eines Elementes alle anderen Elemente neu einfügt, wie stellt ihr dann sicher, dass ihr sie in der richtigen Reihenfolge wieder einfügt?

Re: P3 - Aufgabenzettel 2 2002-11-06 14:32
Slater
bisschen komplizierter wird der algorithmus schon als blosses neueinfügen (wär bei grossen datenmengen wohl auch nicht der hit ;)), oder du merkst dir die reihenfolge..

Re: P3 - Aufgabenzettel 2 2002-11-06 15:33
Zaphod
Hmm… Reihenfolge merken ist doof… aber das komplizierte auch.. da muss ich wohl noch ein wenig tüfteln. Ich hatte zunächst die Idee gehabt, einfach alle darüber liegenden zu prüfen, ob die mit ihrer Hash-Positin übereinstimmtn, und ggf. neu einzufügen, aber… dabei verfehle ich ja schon eventuell die Reihenfolge…

Re: P3 - Aufgabenzettel 2 2002-11-06 18:17
Fred
Ich hab heute mal beim Duschen ueber das Loeschproblem bei Hashtabellen mit linearer Sondierung nachgedacht [img]http://www.sternenvolk.de/symb/7.gif[/img]

Sei Element das Element an der Stelle i in der Hashtabelle.
Sei index(Element) der Index, der sich aus dem Schluessel % size ergibt (also der Index, an der ein neues Element normalerweise eingefuegt wird, wenn keine Kollision besteht).
Sei x der Index des gerade gelöschten Elements.

Wenn Element[x+1] == null ist alles ok, man muss nichts weiter machen.

Ansonsten durchsuche alle Elemente von x+1 bis y, (wobei Element[y+1] == null und Element[x+1]…Element[y] != null) und schiebe jedes Element[z] mit der Eigenschaft index(Element[z]) != z auf die zuletzt freigewordene Position.

Ich meine das muesste gehen… was haltet Ihr davon? Ist Euch der Sinn des Algorithmus klar?



Re: P3 - Aufgabenzettel 2 2002-11-06 19:06
Slater
wie ich mir das gerade beim essen ([img]http://www.sternenvolk.de/symb/6.gif[/img]) überlege, fehlt da noch ne kleinigkeit

wenn das das verschoben element duch das verschieben auf einen platz kommt, der 'vor' index() liegt, wirds nicht mehr gefunden, beispiel:
platz 0 platz 1 platz 2 platz 3 obj 0 obj 1 obj 2 obj 3 index()=0 index()=1 index()=2 index=()2 => -------------------------- platz 0 platz 1 platz 2 platz 3 obj 0 leer obj 2 obj 3 index()=0 index()=2 index()=2 => ---------------------------- platz 0 platz 1 platz 2 platz 3 obj 0 obj 3 obj 2 leer index()=0 index()=2 index()=2 => obj 3 wird nicht mehr gefunden


.


also nur elemente verschieben, deren index() <= index des leeren feldes ist,
(und dann mit dem index des neuen leeren feldes als vergleichsindex weitermachen),
sonst seh ich nix falsches, kann ja mal einen test bauen ;)



Re: P3 - Aufgabenzettel 2 2002-11-06 19:47
Fred
wie ich mir das gerade beim essen ([img]http://www.sternenvolk.de/symb/6.gif[/img]) überlege, fehlt da noch ne kleinigkeit

wenn das das verschoben element duch das verschieben auf einen platz kommt, der 'vor' index() liegt, wirds nicht mehr gefunden
Hey stimmt! Super, danke. [img]http://images.rapidforum.com/images/i14.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-06 20:15
Slater
also nur elemente verschieben, deren index() <= index des leeren feldes ist,
im sinne von (index() tatsächliche position des elements)

edit
reicht nicht wirklich, siehe ein paar posts weiter



so scheint es zu klappen, testfall aus dem skript erfolgreich simuliert [img]http://www.sternenvolk.de/symb/6.gif[/img]



Re: P3 - Aufgabenzettel 2 2002-11-06 21:23
Elnino
Ähmm…jetzt mal was ganz anderes. Passt nicht ganz rein aber was soll's! Was soll man eigentlich genau bei Aufgabe 1 machen? Ich weiß nicht ob das daran liegt das ich inzwischen fast 10 Std. Mathe hinter mir hab, aber ich weiß nicht was die da genau wollen! Der Reader ist klar, und alles andere auch, aber was ist das Ziel?
Übrigens: warum werden die Ergebnisse wenn man die main(..) startet erstmal mit nummern angezeigt und dann anschließend so wie sie in der komma***.txt datei vorzufinden sind???
Sollten die nicht nur mit nummern ausgespuckt werden???


Re: P3 - Aufgabenzettel 2 2002-11-06 21:38
Popcorn
Wenn ich mich recht entsinne, besteht Aufgabe 1 darin, einen Behälter mit Personen-Objekten, aus der vorgegebenen Text-Datei zu erstellen. Und als Behälter sprachen die von nem Array.


Re: P3 - Aufgabenzettel 2 2002-11-06 21:52
Slater
Ähmm…jetzt mal was ganz anderes. Passt nicht ganz rein aber was soll's! Was soll man eigentlich genau bei Aufgabe 1 machen? Ich weiß nicht ob das daran liegt das ich inzwischen fast 10 Std. Mathe hinter mir hab, aber ich weiß nicht was die da genau wollen! Der Reader ist klar, und alles andere auch, aber was ist das Ziel?
aufgabe: personen dem programm zugänglich machen => liste der personen(also der typ person) erstellen, ob nun array oder sonstwas, nicht vorgegeben, und günstigerweise noch ne get-operation,
ist das irgendwie unverständlich als aufgabenstellung? [img]http://www.sternenvolk.de/symb/3.gif[/img]
Übrigens: warum werden die Ergebnisse wenn man die main(..) startet erstmal mit nummern angezeigt und dann anschließend so wie sie in der komma***.txt datei vorzufinden sind???
Sollten die nicht nur mit nummern ausgespuckt werden???
tja, so ist das programm aufgebaut, erst ne ausgabe mit nummern, hinterher noch eine ohne, machen die einfach so ;)


Re: P3 - Aufgabenzettel 2 2002-11-06 22:22
Fred
Loesche Trautermann aus der Hashtabelle!

Hashtabellenbelegung #2
————————

0: (1) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
1: (0) -> Christoph Buhlers wurde am 23.01.1948 geboren, ist 191 cm gross und wiegt 78 kg.
2: (0) -> Ehregott Chemlin wurde am 13.06.1945 geboren, ist 199 cm gross und wiegt 121 kg.
3: (2) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
4: (8) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
5: ( )
6: ( )
7: (0) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
8: (0) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
9: (2) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.
10: (0) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.



Loesche Henning aus der Hashtabelle!

Hashtabellenbelegung #3
————————

0: (1) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
1: (0) -> Christoph Buhlers wurde am 23.01.1948 geboren, ist 191 cm gross und wiegt 78 kg.
2: (0) -> Ehregott Chemlin wurde am 13.06.1945 geboren, ist 199 cm gross und wiegt 121 kg.
3: (2) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
4: ( )
5: ( )
6: ( )
7: (0) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.
8: (0) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
9: (2) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
10: (0) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.



Fuege Henning zur Hashtabelle hinzu!

Hashtabellenbelegung #4
————————

0: (1) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
1: (0) -> Christoph Buhlers wurde am 23.01.1948 geboren, ist 191 cm gross und wiegt 78 kg.
2: (0) -> Ehregott Chemlin wurde am 13.06.1945 geboren, ist 199 cm gross und wiegt 121 kg.
3: (2) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
4: (8) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
5: ( )
6: ( )
7: (0) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.
8: (0) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
9: (2) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
10: (0) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.



Fuege Trautermann zur Hashtabelle hinzu!

Hashtabellenbelegung #5
————————

0: (1) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
1: (0) -> Christoph Buhlers wurde am 23.01.1948 geboren, ist 191 cm gross und wiegt 78 kg.
2: (0) -> Ehregott Chemlin wurde am 13.06.1945 geboren, ist 199 cm gross und wiegt 121 kg.
3: (2) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
4: (8) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
5: (8) -> Clemens Trautermann wurde am 22.04.1975 geboren, ist 170 cm gross und wiegt 85 kg.
6: ( )
7: (0) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.
8: (0) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
9: (2) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
10: (0) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.



Fuege Schmidt zur Hashtabelle hinzu!

Hashtabellenbelegung #6
————————

0: (1) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
1: (0) -> Christoph Buhlers wurde am 23.01.1948 geboren, ist 191 cm gross und wiegt 78 kg.
2: (0) -> Ehregott Chemlin wurde am 13.06.1945 geboren, ist 199 cm gross und wiegt 121 kg.
3: (2) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
4: (8) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
5: (8) -> Clemens Trautermann wurde am 22.04.1975 geboren, ist 170 cm gross und wiegt 85 kg.
6: (10) -> Olga Schmidt wurde am 22.05.1967 geboren, ist 182 cm gross und wiegt 100 kg.
7: (0) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.
8: (0) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
9: (2) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
10: (0) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.



Loesche Chemlin aus der Hashtabelle!

Hashtabellenbelegung #7
————————

0: (1) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
1: (0) -> Christoph Buhlers wurde am 23.01.1948 geboren, ist 191 cm gross und wiegt 78 kg.
2: (1) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
3: (7) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
4: (7) -> Clemens Trautermann wurde am 22.04.1975 geboren, ist 170 cm gross und wiegt 85 kg.
5: (9) -> Olga Schmidt wurde am 22.05.1967 geboren, ist 182 cm gross und wiegt 100 kg.
6: ( )
7: (0) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.
8: (0) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
9: (2) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
10: (0) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.



Loesche Buhlers aus der Hashtabelle!

Hashtabellenbelegung #8
————————

0: (1) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
1: (0) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
2: (6) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
3: (6) -> Clemens Trautermann wurde am 22.04.1975 geboren, ist 170 cm gross und wiegt 85 kg.
4: (8) -> Olga Schmidt wurde am 22.05.1967 geboren, ist 182 cm gross und wiegt 100 kg.
5: ( )
6: ( )
7: (0) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.
8: (0) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
9: (2) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
10: (0) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.



Loesche Broemel aus der Hashtabelle!

Hashtabellenbelegung #9
————————

0: (1) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
1: (5) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
2: (5) -> Clemens Trautermann wurde am 22.04.1975 geboren, ist 170 cm gross und wiegt 85 kg.
3: (7) -> Olga Schmidt wurde am 22.05.1967 geboren, ist 182 cm gross und wiegt 100 kg.
4: ( )
5: ( )
6: ( )
7: (0) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.
8: (0) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
9: (2) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
10: (0) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.


Re: P3 - Aufgabenzettel 2 2002-11-06 22:23
Fred
So, habe jetzt mal den Loesch-Algorithmus, den Slater und ich entworfen haben, implementiert. Abgesehen von den ersten 10 Einfuegeschritten habe ich nun nach jeder einzelnen Operation ein Log erstellt. Die erste Belegegung sollte ja, unabhaengig vom Loesch-Algorithmus, bei allen gleich sein. (n) bedeutet, dass der Eintrag n Plaetze von seinem eigentlichen Platz entfernt ist (wegen Kollision beim Einfuegen). Demzufolge bedeutet (0), dass es keine Kollision gab.

Fuege Chemlin zur Hashtabelle hinzu!
Fuege Buhlers zur Hashtabelle hinzu!
Fuege Broemel zur Hashtabelle hinzu!
Fuege Ismael zur Hashtabelle hinzu!
Fuege Henning zur Hashtabelle hinzu!
Fuege Kroll zur Hashtabelle hinzu!
Fuege Trautermann zur Hashtabelle hinzu!
Fuege Henckler zur Hashtabelle hinzu!
Fuege Kauffholt zur Hashtabelle hinzu!
Fuege Stürcke zur Hashtabelle hinzu!

Hashtabellenbelegung #1
————————

0: (4) -> Elise Henckler wurde am 28.05.1968 geboren, ist 180 cm gross und wiegt 83 kg.
1: (0) -> Christoph Buhlers wurde am 23.01.1948 geboren, ist 191 cm gross und wiegt 78 kg.
2: (0) -> Ehregott Chemlin wurde am 13.06.1945 geboren, ist 199 cm gross und wiegt 121 kg.
3: (2) -> Thomas Broemel wurde am 05.10.1961 geboren, ist 168 cm gross und wiegt 92 kg.
4: (5) -> Albert Kauffholt wurde am 10.03.1941 geboren, ist 164 cm gross und wiegt 59 kg.
5: (9) -> Walter Stürcke wurde am 10.04.1969 geboren, ist 158 cm gross und wiegt 77 kg.
6: ( )
7: (0) -> Ines Henning wurde am 22.07.1981 geboren, ist 161 cm gross und wiegt 70 kg.
8: (0) -> Roswitha Ismael wurde am 04.11.1956 geboren, ist 190 cm gross und wiegt 89 kg.
9: (1) -> Clemens Trautermann wurde am 22.04.1975 geboren, ist 170 cm gross und wiegt 85 kg.
10: (0) -> Katharina Kroll wurde am 11.02.1981 geboren, ist 184 cm gross und wiegt 71 kg.


Re: P3 - Aufgabenzettel 2 2002-11-06 22:35
Fred
Wenn ich mich recht entsinne, besteht Aufgabe 1 darin, einen Behälter mit Personen-Objekten, aus der vorgegebenen Text-Datei zu erstellen. Und als Behälter sprachen die von nem Array.
Du entsinnst Dich unrecht [img]http://www.sternenvolk.de/symb/7.gif[/img] Da gibts keine Vorgaben. Als Java Programmierer sollte man sich uebrigens abgewoehnen, bei Datensammlung immer gleich an Arrays zu denken. Nehmt doch einfach ne Collection wie LinkedList!


Re: P3 - Aufgabenzettel 2 2002-11-06 23:31
Fred
Nehmt doch einfach ne Collection wie LinkedList!
Spaetestens bei Aufgabe 3 SOLL man ja eine LinkedList nehmen.


Re: P3 - Aufgabenzettel 2 2002-11-07 01:00
Fred
Na dann will ich Euch mal nicht meine Statistik zum BubbleSort vorenthalten:



BubbleSort auf unsortierter Liste
———————————
Vergleichen: 718994
Vertauschen: 356594


BubbleSort auf sortierter Liste
——————————-
Vergleichen: 1199
Vertauschen: 0



NP: Metallica - Fade To Black


Re: P3 - Aufgabenzettel 2 2002-11-08 14:11
Zaphod
BubbleSort auf unsortierter Liste
———————————
Vergleichen: 718994
Vertauschen: 356594


BubbleSort auf sortierter Liste
——————————-
Vergleichen: 1199
Vertauschen: 0

Hmmm… ich hab da ganz andere Daten raus…

BubbleSort auf unsortierte Liste:
Anzahl der Vergleiche: 719400
Anzahl der Vertauschungen: 355642
=================================
BubbleSort auf sortierte Liste:
Anzahl der Vergleiche: 719400
Anzahl der Vertauschungen: 0


..und ich frage mich auch, wie du beim zweiten mal BubbleSort anwendest, aber nur n Vergleiche brauchst..


Re: P3 - Aufgabenzettel 2 2002-11-08 14:28
Slater
ich rat mal:
1200 vergleiche kriegt man wenn man nach dem ersten durchlauf, nach dem sich nichts mehr verändert hat (= sortiert) aufhört,
ist das erlaubt im sinne des sortierverfahrens?,

ansonsten noch ne neue vertausch-zahl:
362761

bei ebenfalls konstant 719400 vergleichen

Re: P3 - Aufgabenzettel 2 2002-11-08 14:54
Zaphod
ansonsten noch ne neue vertausch-zahl:
362761
bei ebenfalls konstant 719400 vergleichen

ich nehme an, du hast deine forschleifen wie folgt aufgebaut:

for (i=0; i kleiner length, i plusplus){
for (j=i; j kleiner length, j plusplus){
blablabla;
}
}

es reicht aber, wenn du j bei i+1 beginnen lässt, und vielleicht reicht es auch, wenn man i nur bis length-1 laufen lässt?

edit: irgendwie verschluckt der die hälfte… also ohne code..
edit: menno!!


Re: P3 - Aufgabenzettel 2 2002-11-08 16:11
Slater
ich nehme an, du hast deine forschleifen wie folgt aufgebaut:

for (i=0; i kleiner length, i plusplus){
for (j=i; j kleiner length, j plusplus){
blablabla;
}
}

es reicht aber, wenn du j bei i+1 beginnen lässt, und vielleicht reicht es auch, wenn man i nur bis length-1 laufen lässt?
1. hab ich genausoviele vergleiche wie du, also sollte relativ eindeutig sein, wie die schleifen (von der anzahl der durchläufe her) aufgebaut sind
2. wird das da oben nicht funktionieren, da von unten nach oben durchgebubbelt wird,
was zwar dafür sorgt, dass am ende eines bubbelns das element, was auf den höchsten index gehört, auch wirklich dort landet, aber nicht dafür sorgt, dass das niedriegste element ganz vorne steht (wird ja maximal einmal gebubbelt),
wenn du das so hast, hast du den zweiten test mit dieser sortierten liste gemacht, oder mit einer, die von merge sortiert wurde? [img]http://www.sternenvolk.de/symb/24.gif[/img]

jedenfalls kommt bei, egal ob komplett durch (1.4 mio. vergleiche), oder nur so sparsam (719k vergleiche), egal ob von hinten nach vorne oder von vorne nach hinten gebubbelt,
immer genau 362761 tausche raus!,

*und wieder weg*
*geklärt*


@Fred könntest den code zum Hashing-Löschen in deinem letzten post wieder wegnehmen? ;)




Re: P3 - Aufgabenzettel 2 2002-11-08 16:11
Fred
Hmmm… ich hab da ganz andere Daten raus…

BubbleSort auf unsortierte Liste:
Anzahl der Vergleiche: 719400
Anzahl der Vertauschungen: 355642
=================================
BubbleSort auf sortierte Liste:
Anzahl der Vergleiche: 719400
Anzahl der Vertauschungen: 0

..und ich frage mich auch, wie du beim zweiten mal BubbleSort anwendest, aber nur n Vergleiche brauchst..
719400 = 1200 * 1199 / 2 , d.h. Du vergleichst stur alle Elemente miteinander. Das ist aber nicht der Sinn von BubbleSort. BubbleSort vergleicht und vertauscht nur so lange, bis in einem "Durchlauf" von unten nach oben kein Vertauschen mehr noetig war. Zwei geschachtelte Schleifen tun's also nicht!
Zur Anzahl der Vertauschungen, die bei Dir etwas hoeher ist als bei mir - das kann ich mir so schnell auch nicht erklaeren… vertauschst Du vielleicht auch gleiche Elemente?

ich rat mal: 1200 vergleiche kriegt man wenn man nach dem ersten durchlauf, nach dem sich nichts mehr verändert hat (= sortiert) aufhört, ist das erlaubt im sinne des sortierverfahrens?
Gut geraten, genau so funktioniert das Sortierverfahren. Allerdings braucht man bei 1200 Elementen nur 1199 Vergleiche und nicht 1200 [img]http://www.sternenvolk.de/symb/7.gif[/img]

for (i=0; i kleiner length, i plusplus){
for (j=i; j kleiner length, j plusplus){
blablabla;
}
}
Und dann vergleichst Du immer Element i mit Element j? Das ist definitiv kein Bubblesort. Bei BubbleSort werden immer nur zwei benachbarte Elemente verglichen.

Edit: noch ein paar Links zum Thema BubbleSort

http://liebknecht-gymnasium.bei.t-online.de/sort/html-Seiten/Bubblesort.html

http://olli.informatik.uni-oldenburg.de/fpsort/Animation.html

http://www.schulinformatik.ch/links/lernenonline/shockwave/bubblesort.html (da braucht man Shockwave fuer)

Re: P3 - Aufgabenzettel 2 2002-11-08 17:11
Slater
@Fred mich interessiert immer noch die anzahl der tausche, hast mein post kurz vor deinem gesehen?

sonst kann ich ja auch mal sonn linkchen posten ;)

http://www.pronix.de/ckurs/ckurs241.html

Re: P3 - Aufgabenzettel 2 2002-11-08 17:27
Zaphod
Bubble Sort

void bubble(itemType a[], int N)
{
int i,j;
for ( i= N ; i >= 1 ; i – )
for ( j = 2; j <= i ; j++ )
 if ( a[ j-1 ] > a [ j ] ) swap(a , j-1 , j );
}

Funktionsweise: zwei gegenläufige For-Schleifen, größere Elemente als das Vorgängerelement werden von links nacht rechts immer weitergeschoben.

Nur 1 Durchlauf bei sortiertem Feld, bei entgegengesetzt sortiertem Feld immenser Aufwand.

Nachteil: durch die hohe Anzahl Vertauschungen (Elemten wandern durch das Array) sehr rechenzeitaufwendig !

Verbesserungsmöglichkeit: Wenn festgestellt wird daß in einem kompletten Durchlauf der äußeren Schleife kein Element mehr bewegt wird so kann man bereits abbrechen. Dann großer Vorteil bei fast sortierten Listen.

Das ist definitiv kein Bubblesort. Bei BubbleSort werden immer nur zwei benachbarte Elemente verglichen.

So.. das hab ich gerade von http://www.inf.uni-konstanz.de/~zieglerh/ad/algo_sort.htm kopiert und muss feststellen, dass dies meinem Verfahren doch sehr ähnlich ist. Okay, ich müsste die Schleifen gegenläufig machen, aber ansonsten ist es gleich. Aber diese Leute gehen davon aus, dass das reine BubbleSort nicht abbricht, sobald keine Vertauschungen mehr vorgenommen wurden. Das sei nur ein Verbesserungsvorschlag.

Re: P3 - Aufgabenzettel 2 2002-11-08 17:32
Zaphod
Groovy! Jetzt komme ich auf:

BubbleSort auf unsortierte Liste:
Anzahl der Vergleiche: 719400
Anzahl der Vertauschungen: 124418
=================================
BubbleSort auf sortierte Liste:
Anzahl der Vergleiche: 719400
Anzahl der Vertauschungen: 0

Re: P3 - Aufgabenzettel 2 2002-11-08 17:43
Slater
@Zaphod
ich frage immer noch, ob du die vorsortierte liste für den 2. wert (0 tausche) aus mergesort oder bubblesort erstellt hast, wenn aus bubblesort mit nur 124000 tausche, dann [img]http://images.rapidforum.com/images/i14.gif[/img] ;)

@Fred
die 356594 vergleiche kommen raus, wenn man [edit]andersrum als ich [/edit] sortiert, also [edit] jünger [/edit] vor [edit] älter [/edit],




Re: P3 - Aufgabenzettel 2 2002-11-08 17:47
Zaphod
Yo.. der 100%ig gebubbled [img]http://www.sternenvolk.de/symb/23.gif[/img]

ach… wierum sollten wir sortieren? Nicht, dass mir wieder ein halber Punkt dafür abgezogen wird…

Re: P3 - Aufgabenzettel 2 2002-11-08 17:50
Slater
dreimal darfst du raten, und schau auch mal blatt 1 an, so als tipp [img]http://www.sternenvolk.de/symb/28.gif[/img]

ach ja, dann ist der 2. durchlauf auch verbuggt ;)


Re: P3 - Aufgabenzettel 2 2002-11-08 18:24
Fred
jedenfalls kommt […] immer genau 362761 tausche raus!
@Fred mich interessiert immer noch die anzahl der tausche, hast mein post kurz vor deinem gesehen?
Dann poste doch einfach mal Deinen Code und wir versuchen, den Fehler aufzuspueren.

@Fred könntest den code zum Hashing-Löschen in deinem letzten post wieder wegnehmen? ;)
Ist das Dein Ernst? Dann kann ich auch gleich den ganzen Post loeschen… aber warum? Funktioniert der Code nicht? Ich habe ihn ja wie gesagt nicht durchschauen koennen…

die 356594 vergleiche kommen raus, wenn man falschrum sortiert, also älter vor jünger
Noe, ich sortiere den jüngsten nach vorne und den ältesten nach hinten.
Erster Eintrag: Sven Wallace wurde am 10.02.1982 geboren, ist 182 cm gross und wiegt 73 kg.
Letzter Eintrag: Jörg Brunnhoff wurde am 02.05.1938 geboren, ist 170 cm gross und wiegt 67 kg.

ach… wierum sollten wir sortieren? Nicht, dass mir wieder ein halber Punkt dafür abgezogen wird…
Zitat vom zweiten Aufgabenzettel: "In der 3. Aufgabe sollen die Personen per Bubble-Sort und Merge-Sort sortiert werden. Als Ordnung sollen die für den ersten Aufgabenzettel implementierten Comparatoren verwendet werden."
Zitat vom ersten Aufgabenzettel: "Der AgeComparator soll die Personen anhand ihres Alters vergleichen (jüngere Personen sind "kleiner")."


Re: P3 - Aufgabenzettel 2 2002-11-08 18:36
Slater
jedenfalls kommt […] immer genau 362761 tausche raus!
@Fred mich interessiert immer noch die anzahl der tausche, hast mein post kurz vor deinem gesehen?
Dann poste doch einfach mal Deinen Code und wir versuchen, den Fehler aufzuspueren.
hab ich das noch nicht gesagt?, andersrum sortiert
(also die frage war schon nicht mehr aktuell ;) )

@Fred könntest den code zum Hashing-Löschen in deinem letzten post wieder wegnehmen? ;)
Ist das Dein Ernst? Dann kann ich auch gleich den ganzen Post loeschen… aber warum? Funktioniert der Code nicht? Ich habe ihn ja wie gesagt nicht durchschauen koennen…
is sone copyright-geschichte, wenn du nicht willst egal

die 356594 vergleiche kommen raus, wenn man falschrum sortiert, also älter vor jünger
Noe, ich sortiere den jüngsten nach vorne und den ältesten nach hinten.
Erster Eintrag: Sven Wallace wurde am 10.02.1982 geboren, ist 182 cm gross und wiegt 73 kg.
Letzter Eintrag: Jörg Brunnhoff wurde am 02.05.1938 geboren, ist 170 cm gross und wiegt 67 kg.
pff.., das mein ich doch ;)

ach… wierum sollten wir sortieren? Nicht, dass mir wieder ein halber Punkt dafür abgezogen wird…
Zitat vom zweiten Aufgabenzettel: "In der 3. Aufgabe sollen die Personen per Bubble-Sort und Merge-Sort sortiert werden. Als Ordnung sollen die für den ersten Aufgabenzettel implementierten Comparatoren verwendet werden."
Zitat vom ersten Aufgabenzettel: "Der AgeComparator soll die Personen anhand ihres Alters vergleichen (jüngere Personen sind "kleiner")."

tja, was nun kleiner ist und was grösser ist in meinen augen kein argument, wer sagt denn 'von klein nach gross' und nicht 'von gross nach klein' sortieren?

dagegen gilt die SortedList in blatt 1 als ordentlich, wenn der 'älteste' ganz vorne steht, danach richte ich mich, wohl wieder ne neue übungsgruppen-frage..



Re: P3 - Aufgabenzettel 2 2002-11-09 15:22
Fred
@Fred könntest den code zum Hashing-Löschen in deinem letzten post wieder wegnehmen? ;)
Ist das Dein Ernst? Dann kann ich auch gleich den ganzen Post loeschen… aber warum? Funktioniert der Code nicht? Ich habe ihn ja wie gesagt nicht durchschauen koennen…
is sone copyright-geschichte, wenn du nicht willst egal
Ich hab das Posting gestern geloescht.
Was ist eigentlich mit MergeSort, hat da jemand schon ne Statistik, die er mal ausspucken kann?


Re: P3 - Aufgabenzettel 2 2002-11-09 15:40
Slater
für merger, in beide richtungen mal sortiert

datei:
Vergleiche:
von gross nach klein: 10807
von klein nach gross: 10797
Tausche: 0

neue LinkedListen: 3598
Elemente der neuen LinkedListen: 25904

sortiert:
Vergleiche:
von gross nach klein: 6432
von klein nach gross: 6432
Tausche: 0

neue LinkedListen: 3598
Elemente der neuen LinkedListen: 25904




Re: P3 - Aufgabenzettel 2 2002-11-09 17:04
Fred
So, nachdem ich 20 Minuten nicht ins UniMatiX reinkam [img]http://www.sternenvolk.de/symb/20.gif[/img], kann ich nun endlich die Statistik zu meiner MergeSort Implementation posten…


MergeSort auf unsortierter Liste
———————————
Vergleichen: 10805
Vertauschen: 5516


MergeSort auf sortierter Liste
——————————-
Vergleichen: 5920
Vertauschen: 0


Falls beim Mergen der sortierten Teillisten das naechste Element aus der zweiten Teilliste groesser ist als das naechste Element aus der ersten Teilliste, so wird dies als Vertauschen gewertet.


Re: P3 - Aufgabenzettel 2 2002-11-09 17:17
Zaphod
neue LinkedListen: 3598
Elemente der neuen LinkedListen: 25904

Was machst du da? Wir haben doch nur 1200 Personen.. mehr Elemente müssten daher in der Liste auch nicht drin sein, oder meinst du was anderes damit?

Re: P3 - Aufgabenzettel 2 2002-11-09 17:27
Fred
neue LinkedListen: 3598
Elemente der neuen LinkedListen: 25904
Hmmm, sollen wir das wirklich in der Form berechnen? "Ermitteln Sie für beide Algorithmen die Anzahl der Vertauschungs- und Vergleichsoperationen bei Verwendung der Personendaten aus Aufgabe 1. a) für die unsortierten Daten so wie sie in der Datei stehen. b) für die bereits sortierten Daten. Bestimmen und vergleichen Sie grob den Speicherbedarf der beiden Sortieralgorithmen. Bitte erläutern Sie kurz Ihre Einschätzung."
Was genau heisst "Bestimmen Sie den Speicherbedarf"? Dass man es mitzaehlen soll, oder soll man es sich nur ueberlegen? Auf jeden Fall soll man ja auch irgendwas schaetzen… immer diese ungenauen Aufgabenstellungen [img]http://www.sternenvolk.de/symb/12.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-09 18:32
Slater
neue LinkedListen: 3598
Elemente der neuen LinkedListen: 25904

Was machst du da? Wir haben doch nur 1200 Personen.. mehr Elemente müssten daher in der Liste auch nicht drin sein, oder meinst du was anderes damit?
beim mergen entstehen jede menge teillisten, 2 mit 600 drin, 4 mit 300 usw. da kommt was zusammen, also ich mach praktisch bei jedem schritt ne neue LinkedList, ob das so schlau ist sei mal dahingestellt, schlau sein passt irgendwie nicht zu 'verwenden sie dafür LinkedList',

edit
soll die gesamtzahl der elemente aller neuen listen sein,
also im schnitt nur 7, viele kleine listchen



ob man überhaupt mitzählen soll, kann ich auch nicht sagen..


Re: P3 - Aufgabenzettel 2 2002-11-09 18:45
Zaphod
schlau sein passt irgendwie nicht zu 'verwenden sie dafür LinkedList'
Yo.. ich hätte das auch lieber mit Arrays gemacht. Die darf man wenigstens gleichzeitig an verschiedenen durchlaufen und verändern…
Aber dafür kenne ich jetzt eine neue Exception [img]http://www.sternenvolk.de/symb/15.gif[/img]
"ConcurrentModificationException"

Re: P3 - Aufgabenzettel 2 2002-11-09 19:51
TriPhoenix
also ich mach praktisch bei jedem schritt ne neue LinkedList, ob das so schlau ist sei mal dahingestellt, schlau sein passt irgendwie nicht zu 'verwenden sie dafür LinkedList'

Was die dazu schreiben ist sowieso völliger Quark…
Aufm Zettel steht:
"Bitte beachten Sie, das die subList Methode keine Kopie der Liste anlegt (sondern nur einen sog. View). Daher dürfen die SubListen nicht verändert werden."

Die Java-Doku zu dieesem Thema:
"The returned list is backed by this list, so changes in the returned list are reflected in this list, and vice-versa. The returned list supports all of the optional list operations supported by this list."

Ergo ist doch ändenr in Sublisten vollkommen OK und sogar funktional eingeplant. So ein Effizienzverlust und überhuapt nur Quatsch das ganze.

Re: P3 - Aufgabenzettel 2 2002-11-09 19:55
Zaphod
Hast du schon eine fertige funktionierende Lösung?

Re: P3 - Aufgabenzettel 2 2002-11-09 20:03
TriPhoenix
Hast du schon eine fertige funktionierende Lösung?

Gib mir noch 30 Minuten [img]http://www.sternenvolk.de/symb/15.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-09 20:16
Slater
Was die dazu schreiben ist sowieso völliger Quark…
Aufm Zettel steht:
"Bitte beachten Sie, das die subList Methode keine Kopie der Liste anlegt (sondern nur einen sog. View). Daher dürfen die SubListen nicht verändert werden."

Die Java-Doku zu dieesem Thema:
"The returned list is backed by this list, so changes in the returned list are reflected in this list, and vice-versa. The returned list supports all of the optional list operations supported by this list."

Ergo ist doch ändenr in Sublisten vollkommen OK und sogar funktional eingeplant. So ein Effizienzverlust und überhuapt nur Quatsch das ganze.
aber bisschen weiter unten:

While the subList operation is extremely powerful, some care must be exercised when using it. The semantics of the List returned by subList become undefined if elements are added to or removed from the backing List in any way other than via the returned List. Thus, it's highly recommended that you use the List returned by subList only as a transient object, to perform one or a sequence of range operations on the backing List. The longer you use the subList object, the greater the probability that you'll compromise it by modifying the backing List directly (or through another subList object).

wer weiss was so alles passieren kann [img]http://www.sternenvolk.de/symb/22.gif[/img]



Re: P3 - Aufgabenzettel 2 2002-11-09 20:32
Zaphod
Time's up [img]http://www.sternenvolk.de/symb/25.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-09 21:11
TriPhoenix
Time's up [img]http://www.sternenvolk.de/symb/25.gif[/img]

Jajaja, trotzdem: fertig [img]http://www.sternenvolk.de/symb/15.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-10 00:41
Fred
also ich mach praktisch bei jedem schritt ne neue LinkedList, ob das so schlau ist sei mal dahingestellt
Es geht gar nicht anders wuerde ich sagen.


Yo.. ich hätte das auch lieber mit Arrays gemacht

Jetzt trennt Euch doch endlich einmal von diesen undynamischen Arrays [img]http://www.sternenvolk.de/symb/25.gif[/img]

Ergo ist doch ändenr in Sublisten vollkommen OK und sogar funktional eingeplant. So ein Effizienzverlust
Wuerde bei MergeSort doch gar nichts bringen, in den SubListen rumzupfuschen. Der Algorithmus sieht es so vor, dass man neue Listen erzeugt, ich denke mal diese Einsicht war ein Ziel des Aufgabenblattes.

NP: Spiral Architect - Conjuring Collapse


Re: P3 - Aufgabenzettel 2 2002-11-10 01:20
TriPhoenix
Ergo ist doch ändenr in Sublisten vollkommen OK und sogar funktional eingeplant. So ein Effizienzverlust
Wuerde bei MergeSort doch gar nichts bringen, in den SubListen rumzupfuschen. Der Algorithmus sieht es so vor, dass man neue Listen erzeugt, ich denke mal diese Einsicht war ein Ziel des Aufgabenblattes.

Hab ich dann auch irgendwann gesehen, trotzdem bleibt der Hinweis man DÜRFE es auf keinen fall nicht so korrekt :)

Re: P3 - Aufgabenzettel 2 2002-11-13 22:15
Fred
ob man überhaupt mitzählen soll, kann ich auch nicht sagen..
Also auf jeden Fall soll man den Speicherbedarf schaetzen. Was habt Ihr denn da beim MergeSort raus? Ich meine, 2n zusaetzlicher Speicher sollte reichen, wenn in der Liste n Elemente drin sind. Kann man das noch irgendwie toll notieren, so wie ne O-Notation fuer Zeit?

Re: P3 - Aufgabenzettel 2 2002-11-13 22:32
Slater
also ich mach praktisch bei jedem schritt ne neue LinkedList, ob das so schlau ist sei mal dahingestellt
Es geht gar nicht anders wuerde ich sagen.
Also auf jeden Fall soll man den Speicherbedarf schaetzen. Was habt Ihr denn da beim MergeSort raus? Ich meine, 2n zusaetzlicher Speicher sollte reichen, wenn in der Liste n Elemente drin sind. Kann man das noch irgendwie toll notieren, so wie ne O-Notation fuer Zeit?

ja wie meinst es denn nun, ständig neue listen oder maximal zwei (was für mich 2n bedeutet)?, 2n ist wohl O(n),

ständig neue listen ist in O(n log n) hab ich mir so hingedacht,


Re: P3 - Aufgabenzettel 2 2002-11-14 00:07
Cyrax
Soooo.. bin nun auch endlich fertig mit dem Krams… diese subList Methode ist echt ein Sch**ß. Aber es funzt endlich *g*…

Re: P3 - Aufgabenzettel 2 2002-11-14 15:16
Fred
ständig neue listen ist in O(n log n) hab ich mir so hingedacht,
Ach so, man schreibt das auch mit so nem O wie bei der Zeitaufwendigkeit von Algorithmen? Okay. Das mit dem n log n hatte ich auch erst gedacht, aber… [img]http://www.sternenvolk.de/symb/10.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-14 15:57
Slater
BubbleSort auf unsortierte Liste:
Anzahl der Vergleiche: 719400
Anzahl der Vertauschungen: 124418
ist der algorithmus immer noch aktuell?,
ich weiss dass es nicht funktionieren kann [img]http://www.sternenvolk.de/symb/24.gif[/img],
also poste mal oder schick an slaterb@gmx.de


Re: P3 - Aufgabenzettel 2 2002-11-14 16:39
Zaphod
public static void bubbleSort(Person[] p){ bubbleVergleiche = 0; bubbleVertauschungen = 0; for(int i = 0; i < p.length; i++){ for (int j = p.length-1; j > i; j--){ bubbleVergleiche++; if (comp.compare(p[ i], p[j]) > 0){ bubbleVertauschungen++; Person temp = p[ i]; p[ i] = p[j]; p[j] = temp; } } } } Jetzt wo ich richtig herum sortiere, komme ich auf:
BubbleSort auf unsortierte Liste:
Anzahl der Vergleiche: 719400
Anzahl der Vertauschungen: 120655


Re: P3 - Aufgabenzettel 2 2002-11-14 17:05
Slater
jo gut hat nicht das bubblesort-merkmal, nur benachtbarte felder zu tauschen,
mehr kann ich dann auch nicht meckern,

wenns deine quellen als bubblesort definieren..,
viel glück bei der abgabe [img]http://www.sternenvolk.de/symb/28.gif[/img]

edit
ach ja, sortiervorgabe falls jemanden noch unklar: 1982, …, 1932,
hatt ich ja glatt falschrum


Re: P3 - Aufgabenzettel 2 2002-11-14 23:13
Zaphod
Ich glaube, ich habe das in dem Buch von N. Wirth gelesen, wenn der das nicht weiß, dann weiß es keiner [img]http://www.sternenvolk.de/symb/22.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-15 00:56
TriPhoenix
Aber Zaphod, eine Frage, wo ist dein faktor 8 geblieben [img]http://www.sternenvolk.de/symb/7.gif[/img]:

[img]http://www.triphoenix.de/bubble.png[/img]

Re: P3 - Aufgabenzettel 2 2002-11-15 01:21
Zaphod
hmm… vielleicht hat er sich aus Versehen durch 0 dividiert. Aber man kann klar erkennen, dass es etwas weniger vertauscht [img]http://www.sternenvolk.de/symb/22.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-15 14:22
Tzwoenn
Habt ihr MergeSort schon gemacht?

Re: P3 - Aufgabenzettel 2 2002-11-15 14:27
Swordsman
wie lange habt ihr eigentlich zeit für die aufgaben? ihr habt irgendwie viel zu viel zeit zum drüber streiten hier.. [img]http://www.sternenvolk.de/symb/22.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-15 14:33
TriPhoenix
wie lange habt ihr eigentlich zeit für die aufgaben? ihr habt irgendwie viel zu viel zeit zum drüber streiten hier.. [img]http://www.sternenvolk.de/symb/22.gif[/img]

2 Wochen, da bleibt viiiiiieeeeeel Zeit zum kloppen [img]http://www.sternenvolk.de/symb/28.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-15 14:34
TriPhoenix
Habt ihr MergeSort schon gemacht?

Jap, muss auch langsam fertig sein –> montag abgabe ;)

Re: P3 - Aufgabenzettel 2 2002-11-15 14:35
Tzwoenn

import java.util.Comparator; import java.util.List; /** * Eine Mergesort-Implementation * * @author me public class MergeSort implements SortAlgorithm { // single Instance von MergeSort private MergeSort _instance = null; // Comparator muss in allen Funktionen verfügbar sein private Comparator _comp; /** * PRIVATER Konstruktor, da die die Klasse auf dem * Entwurfsmuster Singleton basiert. */ private MergeSort() { } /** * Gibt die MergeSort-Instance * @return die MergeSort-Instance */ public MergeSort getInstance() { // Falls Object noch nicht initialisiert wurde, wird es das hier if (_instance == null) _instance = new MergeSort(); return _instance; } /** * Sortiert eine Liste mit Hilfe des Mergesort-Algorithmus * @see SortAlgorithm#sortList(List, Comparator) */ public void sortList(List liste, Comparator comp) { // Mögliche Fehler bei der Parameterübergabe if (liste == null || comp == null) throw new IllegalArgumentException("Vorbedingung verletzt: Die Liste oder der Comparator sind Nullpointer."); else if (liste.size() == 0) throw new IllegalArgumentException("Vorbedingung verletzt: Liste ist leer."); else { // Mergesort läßt grüßen _comp = comp; mergeSort(liste); } return; } private void mergeSort(List liste) { int length = liste.size(); if (length > 1) { int m = length / 2; List lo = liste.subList(0, m+1); List hi = liste.subList(m+1, length); mergeSort(lo); mergeSort(hi); merge(lo, hi); } return; } private void merge(List lo, List hi) { int hi_size = hi.size(); int lo_size = lo.size(); // Backup der Daten, um damit arbeiten zu können Object[] temp_lo = lo.toArray(); Object[] temp_hi = hi.toArray(); // jeweils das nächstgrößte Element zurückkopieren int i = 0; int j = 0; int counter = 0; List ListPointer = lo; while (i < lo_size && j < hi_size) { if (counter == lo.size()) { ListPointer = hi; counter = 0; } if ((j >= hi_size) || (i < lo_size && _comp.compare(temp_lo[i], temp_hi[j]) <= 0)) ListPointer.set(counter++, temp_lo[i++]); else ListPointer.set(counter++, temp_hi[j++]); } return; } }


Hab irgendwie das Gefühl, dass das mergen ziemlich beschissen langsam ist. Muss mal sehn, wo ich an der while-Schleife noch rumschrauben kann. Hat es jemand von euch mal damit versucht, die Hi-List in umgekehrter Reihenfolge in temp zu schreiben? Da kann man sich viele Vergleichsoperationen sparen, wenn man das nachher merged… glaub ich zumindest [img]http://www.sternenvolk.de/symb/15.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-15 14:38
Tzwoenn
Björn, du hast wieder alles kaputt gemacht, oder ist das nur bei mir so ohne Zeilenumbruch?

Re: P3 - Aufgabenzettel 2 2002-11-15 14:41
TriPhoenix
[…]

Hab irgendwie das Gefühl, dass das mergen ziemlich beschissen langsam ist. Muss mal sehn, wo ich an der while-Schleife noch rumschrauben kann. Hat es jemand von euch mal damit versucht, die Hi-List in umgekehrter Reihenfolge in temp zu schreiben? Da kann man sich viele Vergleichsoperationen sparen, wenn man das nachher merged… glaub ich zumindest [img]http://www.sternenvolk.de/symb/15.gif[/img]

a) Mach die ganzen Methoden doch static, dann sparst du dir das ganze Instance-Gewurste :)
b) Ich kann dir folgende Vorgehenswiese beim mergen empfehlen:
solange Teillisten noch nicht leer wenn Teilliste links leer komplette rechte Teilliste an das Ergebnis anhängen wenn Teilliste rechts leer komplette linke Teilliste and das Ergebnis anhängen sonst Element in linker Teilliste keliner? ja --> element von Links kopieren nein --> element von rechts kopieren
Durch die ersten beiden Fälle, sparst du dir iene Menge vergleiche, nämlich immer wenn eine Teilliste schon leer ist.

c) Warum machst du die Temp-Kopien?

PS:
Björn, du hast wieder alles kaputt gemacht, oder ist das nur bei mir so ohne Zeilenumbruch?
Bei mir auch

Re: P3 - Aufgabenzettel 2 2002-11-15 16:07
Tzwoenn
Mach die ganzen Methoden doch static, dann sparst du dir das ganze Instance-Gewurste
Dann kan nich sie aber nicht mehr als Referenz übergeben *gg*, außerdem sind static-methoden nach möglichkeit zu vermeiden… das ganze soll ja hübsch aussehen. Programmieren kann jeder Depp, aber nen struktiertes Programmkonzept zu entwickeln können nur die wenigesten.

Ahhh, Essen brennt an.

Re: P3 - Aufgabenzettel 2 2002-11-15 16:38
TriPhoenix
Mach die ganzen Methoden doch static, dann sparst du dir das ganze Instance-Gewurste
außerdem sind static-methoden nach möglichkeit zu vermeiden… das ganze soll ja hübsch aussehen. Programmieren kann jeder Depp, aber nen struktiertes Programmkonzept zu entwickeln können nur die wenigesten.

Seh ich nicht ein, du beschreibst ja mit dieser Klasse keine DInge sondern etwas was eine Fähigkeit hat und da ists unsinnig von Instanzen zu halten [img]http://www.sternenvolk.de/symb/28.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-15 17:34
Fred
Programmieren kann jeder Depp, aber nen struktiertes Programmkonzept zu entwickeln können nur die wenigesten
Warum implementierst Du den Mergesort nicht als Methode einer "PersonenService"-Klasse? So habe ich es jedenfalls gemacht. Irgendwo muessen die Daten ja sinnvoll gespeichert werden… das XP-Praktikum laesst gruessen [img]http://www.sternenvolk.de/symb/7.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-15 17:37
Tzwoenn
Und was ist, wenn du ne Referenz haben willst, die besagt welchen SortierAlg du nutzen willst? Und diese Referenz kann man durchaus an irgendwen übergeben… versuch das mal mit der static.
Aber du kannst dich ja mal gern mit Mr. W. (sprich: dabbelju) Röper auseinandersetzen… [img]http://www.sternenvolk.de/symb/22.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-15 17:41
Fred
Und was ist, wenn du ne Referenz haben willst, die besagt welchen SortierAlg du nutzen willst?
Wozu denn das?


Re: P3 - Aufgabenzettel 2 2002-11-15 18:48
Tzwoenn
Wenn du mehrere Implementationen eines Sortieralgorithmus hast z.B. und du halt über diesen Parameter immer die derzeit aktuelle ansprechen kannst. Das Konzept nennt sich "Design Patterns".
Muss zur Arbeit, Mädels. Ich wünsch euch noch ne erholsame Nacht.

Re: P3 - Aufgabenzettel 2 2002-11-15 20:39
Slater
Björn, du hast wieder alles kaputt gemacht,
oder ist das nur bei mir so ohne Zeilenumbruch?
da bist du doch selber schuld dran,
wenn du solange zeilen in code-tags schreibst,
öfter mal return drücken..

private void merge(List lo, List hi) { [..] while (i < lo_size && j < hi_size) { if (counter == lo.size()) { ListPointer = hi; counter = 0; } if ((j >= hi_size) || (i < lo_size && _comp.compare( temp_lo[ i ], temp_hi[j]) <= 0)) ListPointer.set(counter++, temp_lo[i++]); else ListPointer.set(counter++, temp_hi[j++]); } return; }

im vergleich zu meiner vorherigen schleife ist die so
schön, dass ich die konzepttechnisch übernehme ;),

aber dafür eventuell 2 verbesserungen bei dir:

1.)
funktioniert das überhaupt?,
angenommen linke liste = {2}, rechte liste = {1},
also zielliste vorm sortieren: {2,1}

erster durchlauf:
2 nicht kleiner als 1, also kommt es zum else-fall,

danach sieht die zielliste so aus: {1,1}

nun ist aber j nicht mehr kleiner als hi_size,
die schleife wird kein 2. mal durchlaufen,

oder seh ich das falsch?

ein "||" beim while wäre da wohl passender,

2.)
unabhängig davon stehen die anzahl der durchläufe eh schon
vorher fest, nämlich (lo_size + hi_size),
also gehts mit einer for-schleife oder äquivalentem while
sicher bisschen schneller ;)




Re: P3 - Aufgabenzettel 2 2002-11-16 11:34
Tzwoenn
Muss zur Arbeit, Mädels. Ich wünsch euch noch ne erholsame Nacht.

Back from work… ich finds gut, dass man sich selber zitieren kann [img]http://www.sternenvolk.de/symb/15.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-16 11:36
Zaphod
Ich frag lieber gar nicht erst, als was du arbeitest.. [img]http://www.sternenvolk.de/symb/22.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-16 11:36
Tzwoenn
1.)
funktioniert das überhaupt?,
angenommen linke liste = {2}, rechte liste = {1},
also zielliste vorm sortieren: {2,1}

erster durchlauf:
2 nicht kleiner als 1, also kommt es zum else-fall,

danach sieht die zielliste so aus: {1,1}

nun ist aber j nicht mehr kleiner als hi_size,
die schleife wird kein 2. mal durchlaufen,

oder seh ich das falsch?

ein "||" beim while wäre da wohl passender,

2.)
unabhängig davon stehen die anzahl der durchläufe eh schon
vorher fest, nämlich (lo_size + hi_size),
also gehts mit einer for-schleife oder äquivalentem while
sicher bisschen schneller ;)

Hmm, bin zwar scheissmüde, aber du könntest recht haben. Ich werds erst mal mit nen paar Stunden Schlaf versuchen, bevor ich Aussagen mache, dir mir nachher wieder um die Ohren gehauen werden.

Re: P3 - Aufgabenzettel 2 2002-11-16 11:39
Tzwoenn
Ich frag lieber gar nicht erst, als was du arbeitest.. [img]http://www.sternenvolk.de/symb/22.gif[/img]

Jaaa, das haben sich die Insassen der 3 Streifenwagen gestern Nacht bestimmt auch gefragt… bis sie mich erwischten, da mußt ich dann antworten *grummel* 50€ weniger… und nen Grosseinsatz mehr wegen angeblicher Mißachtung der Obrigkeit. Arschlöcher

Re: P3 - Aufgabenzettel 2 2002-11-16 20:21
Faleiro
… und nen Grosseinsatz mehr wegen angeblicher Mißachtung der Obrigkeit. Arschlöcher
Wie unfair, von Mißachtung ist bei dir ja nun wirklich *gar* nichts zu spueren ;-)))))

Re: P3 - Aufgabenzettel 2 2002-11-16 20:21
Anonymer User
/**

* Eine Mergesort-Implementation

*

* @author me

public class MergeSort implements SortAlgorithm

{

// single Instance von MergeSort

private MergeSort _instance = null;

// Comparator muss in allen Funktionen verfügbar sein

private Comparator _comp;



/**

* PRIVATER Konstruktor, da die die Klasse auf dem

* Entwurfsmuster Singleton basiert.

*/

private MergeSort()

{

}

Wer hat sich das denn einfallen lassen?
Singleton????

Es gibt viele nuetzliche verwendungszwecke fuer Singletons.
z.B wenn man einen Pool von Datenbankverbindung hat, von dem es nur eine Instanz geben soll, damit es nur ein beschraenkte Anzahl von Verbindungen gibt. Aber warum darf es denn diese hochheile Mergesort-Instanz nur einmal geben?! Wenn man schon Design-Patterns verwenden will dann wohl lieber richtig…

:)

Re: P3 - Aufgabenzettel 2 2002-11-16 21:55
Elnino
private void mergeSort(List liste)
{
int length = liste.size();
if (length > 1)
{
int m = length / 2;
List lo = liste.subList(0, m+1);
List hi = liste.subList(m+1, length);
mergeSort(lo);
mergeSort(hi);
merge(lo, hi);
}
return;
}

Mal zwei Fragen:
1) Müsste das hier nicht

List lo = liste.subList(0, m);
List hi = liste.subList(m+1, length);

heißen?

2)Wo wird denn in dem (gesamten) Code eingegeben, dass er das Personen[]
array benutzen soll?


Re: P3 - Aufgabenzettel 2 2002-11-16 22:01
TriPhoenix
Wenn du mehrere Implementationen eines Sortieralgorithmus hast z.B. und du halt über diesen Parameter immer die derzeit aktuelle ansprechen kannst. Das Konzept nennt sich "Design Patterns".
Deisgn Patterns kann man aber sinnvoll und übertrieben verwenden und ich glau nicht dass man eine P3-Aufgabe auf Ereitreungsfähigkeit bauen muss. Hier verwirrt das eher und ist dem Anwendungszweck nicht entsprechend [img]http://www.sternenvolk.de/symb/22.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-16 22:12
Slater
Mal zwei Fragen:
1) Müsste das hier nicht

List lo = liste.subList(0, m);
List hi = liste.subList(m+1, length);

heißen?

2)Wo wird denn in dem (gesamten) Code eingegeben, dass er das Personen[]
array benutzen soll?
aus langer langeweile antworte ich auch mal:
1)
sublist nimmt die elemente vom ersten parameter bis zum zweiten parameter -1,
deswegen ja auch bis length, und nicht length -1
2)
versteh ich allerdings nicht

Re: P3 - Aufgabenzettel 2 2002-11-17 06:58
Hell-O-Mat
Zaphod schrieb:
public static void bubbleSort(Person[] p){ bubbleVergleiche = 0; bubbleVertauschungen = 0; for(int i = 0; i < p.length; i++){ for (int j = p.length-1; j > i; j--){ bubbleVergleiche++; if (comp.compare(p[ i], p[j]) > 0){ bubbleVertauschungen++; Person temp = p[ i]; p[ i] = p[j]; p[j] = temp; } } } } Jetzt wo ich richtig herum sortiere, komme ich auf:
BubbleSort auf unsortierte Liste:
Anzahl der Vergleiche: 719400
Anzahl der Vertauschungen: 120655
sieht ja sehr schön aus, hat aber einen haken, es ist (ein zugegebenermaßen sehr ineffizientes [img]http://www.sternenvolk.de/symb/15.gif[/img]) SelectionSort und definitiv kein BubbleSort:
public static void selection(Object[] o,Comparator c) { bubbleVergleiche=0; bubbleVertauschungen=0; int min; for(int i=0; i < o.length; i++){ min=i; for (int j = o.length-1; j > i; j--){ bubbleVergleiche++; if (c.compare(o[min],o[j]) > 0){ min=j; } } bubbleVertauschungen++; swap(o,i,min); } } wenn du das ganze jetzt mal auf http://www.inf.uni-konstanz.de/~zieglerh/ad/algo_sort.htm (den link hab ich mal von deinem früheren post kopiert [img]http://www.sternenvolk.de/symb/28.gif[/img]) mit der Implementation von SelectionSort vergleichst, müsste dir da doch eine extreme ähnlichkeit auffallen und wohlgemerkt habe ich die for-schleifen selbst nicht verändert, sondern merke mir nur, wo das kleinste element steht und fang nicht gleich wild an zu vertauschen. [img]http://www.sternenvolk.de/symb/23.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-17 08:50
Zaphod
Ich finde immernoch, dass meie Lösung dem BubbleSort auf der Seite sehr viel ähnlicher ist als dem SelectionSort

Re: P3 - Aufgabenzettel 2 2002-11-17 09:14
Popcorn
Und ich finde das hat bei Deiner generellen Uneinsichtigkeit gar nichts zu sagen, weswegen ich Dich jetzt auch nicht darauf hinweise, dass nun auch mal Dein Avatar weg ist. Considered PAL.

Re: P3 - Aufgabenzettel 2 2002-11-17 11:35
Tzwoenn
Es gibt viele nuetzliche verwendungszwecke fuer Singletons.
z.B wenn man einen Pool von Datenbankverbindung hat, von dem es nur eine Instanz geben soll, damit es nur ein beschraenkte Anzahl von Verbindungen gibt. Aber warum darf es denn diese hochheile Mergesort-Instanz nur einmal geben?! Wenn man schon Design-Patterns verwenden will dann wohl lieber richtig…

:)

Warum sollt es mehrere Mergesort-Instanzen geben? Der Algorithmus ist jedesmal derselbe, und das Objekt hat keinen inneren Zustand… wozu also mit Speicherplatz um sich werfen?

Re: P3 - Aufgabenzettel 2 2002-11-17 11:41
Tzwoenn
Mal zwei Fragen:
1) Müsste das hier nicht

List lo = liste.subList(0, m + 1);
List hi = liste.subList(m+1, length);

heißen?

2)Wo wird denn in dem (gesamten) Code eingegeben, dass er das Personen[]
array benutzen soll?

1. Nein, sublist(n, m) geht von n inclusive bis m exclusive.
2. Warum sich derart beschränken, wenn man das ganze auch auf Objekte an sich anwenden kann. Da der Comparator schon genauso variabel ist…

Re: P3 - Aufgabenzettel 2 2002-11-17 13:44
TriPhoenix
Es gibt viele nuetzliche verwendungszwecke fuer Singletons.
z.B wenn man einen Pool von Datenbankverbindung hat, von dem es nur eine Instanz geben soll, damit es nur ein beschraenkte Anzahl von Verbindungen gibt. Aber warum darf es denn diese hochheile Mergesort-Instanz nur einmal geben?! Wenn man schon Design-Patterns verwenden will dann wohl lieber richtig…

:)

Warum sollt es mehrere Mergesort-Instanzen geben? Der Algorithmus ist jedesmal derselbe, und das Objekt hat keinen inneren Zustand… wozu also mit Speicherplatz um sich werfen?

Warum solles auch nur eine einzige MergeSort-Instanz geben, wie du sagst hat das Objekt keinen inneren Zustand, also reicht static auch aus [img]http://www.sternenvolk.de/symb/24.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-17 15:51
Tzwoenn
Langsam bin ichs müde… dann möcht ich mal sehen, wie du deine staticVersion als Parameter übergeben bekommst…

Re: P3 - Aufgabenzettel 2 2002-11-17 16:59
TriPhoenix
Langsam bin ichs müde… dann möcht ich mal sehen, wie du deine staticVersion als Parameter übergeben bekommst…

Ich habe nie gesagt dass das geht, ich sage nur WOZU [img]http://www.sternenvolk.de/symb/24.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-17 17:06
Tzwoenn
*hau* [img]http://www.sternenvolk.de/symb/8.gif[/img]



Re: P3 - Aufgabenzettel 2 2002-11-17 17:20
TriPhoenix
*hau* [img]http://www.sternenvolk.de/symb/8.gif[/img]

*rehau* [img]http://www.sternenvolk.de/symb/24.gif[/img] Ich bestehe nur auf diesen Kampf weil du sagtest:
"außerdem sind static-methoden nach möglichkeit zu vermeiden… das ganze soll ja hübsch aussehen. Programmieren kann jeder Depp, aber nen struktiertes Programmkonzept zu entwickeln können nur die wenigesten."

Static-Methodeon sind nicht pauschal zu vermeiden, sondern da anzuwenden wo sinnvoll [img]http://www.sternenvolk.de/symb/24.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-17 17:52
Slater
Langsam bin ichs müde… dann möcht ich mal sehen, wie du deine staticVersion als Parameter übergeben bekommst…

mensch schreib doch 2 klassen mit static-operationen
und übergibt dann die klasse als parameter
(parameter vom typ sortierer-interface)

ist das denn so schwer [img]http://www.sternenvolk.de/symb/24.gif[/img][img]http://www.sternenvolk.de/symb/24.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-18 00:04
McCancey
früher… bearbeiten…. früher…. abgeben…. weniger…. Stress…… schlaaaaaaaaaaaaaaaaaaaf… [img]http://www.sternenvolk.de/symb/19.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-18 00:36
Fred
früher… bearbeiten…. früher…. abgeben…. weniger…. Stress…… schlaaaaaaaaaaaaaaaaaaaf… [img]http://www.sternenvolk.de/symb/19.gif[/img]
Ich habe gerade noch rechtzeitig um 23:59 abgegeben [img]http://www.sternenvolk.de/symb/6.gif[/img]
So, jetzt erst mal die heutige Simpsons Episode reinziehen… Moe mit den zwei Gesichtern.



Re: P3 - Aufgabenzettel 2 2002-11-18 00:59
Fred

Deadline eingehalten?
Habt ihr auch puenktlich bis 23:59 abgegeben?? na klar!neee…

Antworten zu 'Habt ihr auch puenktlich bis 23:59 abgegeben?':
na klar!: [img]http://www.fb18.de/gfx/graphics/g11.gif[/img]
neee…: [img]http://www.fb18.de/gfx/graphics/r4.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-18 10:14
Tzwoenn
Langsam bin ichs müde… dann möcht ich mal sehen, wie du deine staticVersion als Parameter übergeben bekommst…

mensch schreib doch 2 klassen mit static-operationen
und übergibt dann die klasse als parameter
(parameter vom typ sortierer-interface)

ist das denn so schwer [img]http://www.sternenvolk.de/symb/24.gif[/img][img]http://www.sternenvolk.de/symb/24.gif[/img]

Referenz auf eine Klasse?!? Das geht? *grübel* Ich dacht immer, man kann nur Objekte einer Klasse referenzieren. Gib mal bidde nen kurzes Beispiel…

PS: Habt ihr auch alle brav euer MergeSort gemacht?

Re: P3 - Aufgabenzettel 2 2002-11-18 18:01
Slater
Referenz auf eine Klasse?!? Das geht? *grübel* Ich dacht
immer, man kann nur Objekte einer Klasse referenzieren.
Gib mal bidde nen kurzes Beispiel…
das is was dran an deinem einwand ;),
hab nur zu schnell hingeschrieben und mit objekten verwechselt,
weiss nicht ob es geht [img]http://www.sternenvolk.de/symb/12.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-18 18:05
TriPhoenix
Referenz auf eine Klasse?!? Das geht? *grübel* Ich dacht
immer, man kann nur Objekte einer Klasse referenzieren.
Gib mal bidde nen kurzes Beispiel…
das is was dran an deinem einwand ;),
hab nur zu schnell hingeschrieben und mit objekten verwechselt,
weiss nicht ob es geht [img]http://www.sternenvolk.de/symb/12.gif[/img]

Also Prinzipiell kann man Objekte vom Typ Class weitergeben und per deren Methoden und mit Hilfe von Reflection munter statics aufrufen [img]http://www.sternenvolk.de/symb/28.gif[/img]

Re: P3 - Aufgabenzettel 2 2002-11-18 18:21
Fred
Referenz auf eine Klasse?!? Das geht?
weiss nicht ob es geht [img]http://www.sternenvolk.de/symb/12.gif[/img]
Also Prinzipiell kann man Objekte vom Typ Class weitergeben und per deren Methoden und mit Hilfe von Reflection munter statics aufrufen [img]http://www.sternenvolk.de/symb/28.gif[/img]
Klar, warum einfach, wenn es auch kompliziert geht… [img]http://www.sternenvolk.de/symb/17.gif[/img]



Re: P3 - Aufgabenzettel 2 2002-11-19 12:05
Tzwoenn
[img]http://www.sternenvolk.de/symb/3.gif[/img] *hier wird Deutschlands größter Bahnhof gebaut*

Re: P3 - Aufgabenzettel 2 2002-11-19 21:23
M
Also Prinzipiell kann man Objekte vom Typ Class weitergeben und per deren Methoden und mit Hilfe von Reflection munter statics aufrufen [img]http://www.sternenvolk.de/symb/28.gif[/img]
Klar, warum einfach, wenn es auch kompliziert geht… [img]http://www.sternenvolk.de/symb/17.gif[/img]

Das war sogar mal ne Aufgabe in einem früheren Java-Praktikum [img]http://www.sternenvolk.de/symb/28.gif[/img]


Re: P3 - Aufgabenzettel 2 2002-11-19 23:04
Fred
Das war sogar mal ne Aufgabe in einem früheren Java-Praktikum
Dann poste doch mal ein Code-Snippet, kann mir das gerade nicht so vorstellen.


Re: P3 - Aufgabenzettel 2 2002-11-20 19:04
Tzwoenn
Würd mich auch mal interessieren…

Re: P3 - Aufgabenzettel 2 2002-11-20 19:24
TriPhoenix
Das war sogar mal ne Aufgabe in einem früheren Java-Praktikum
Dann poste doch mal ein Code-Snippet, kann mir das gerade nicht so vorstellen.

Könnt ihr haben [img]http://www.sternenvolk.de/symb/28.gif[/img]:

MyStatic1.java:
public class MyStatic1 { public static void staticTest(String bla) { System.out.println("Hello from MyStatic1.staticTest("+bla+")"); } }
Mystatic2.java:
public class MyStatic2 { public static void staticTest(String bla) { System.out.println("Hello from MyStatic2.staticTest("+bla+")"); } }
StaticTest.java:
import java.lang.reflect.*; public class StaticTest { private static void invokeStatic(String classname, String param) { Class[] paramType = { String.class }; Object[] params = {param}; try { Class theStatic = Class.forName(classname); Method m = theStatic.getMethod("staticTest", paramType); m.invoke(null, params); } catch (Exception e) { System.out.println("Reflection Error: " + e.getMessage()); } } public static void main(String[] args) { invokeStatic("MyStatic1", "111"); invokeStatic("MyStatic2", "222"); } }
Ausgabe:
Hello from MyStatic1.staticTest(111) Hello from MyStatic2.staticTest(222)

Funktioniert doch bestens [img]http://www.sternenvolk.de/symb/24.gif[/img]
Sicherlich in so einem kleinen Beispiel siehts
unübersichtlich aus, aber für Plugin-Techniken
ist sowas echt super