Im gleich am anfang wird von sortierverfahren gesprochen und dass diese ca 1/4 der "kommerziel benutzten rechenzeit" beanspruchen.
Sortieren ist nach wie vor sehr wichtig, aber das sollte man
schon dazu sagen: diese Studie ist, soweit ich mich erinnere,
schon etwas aelter.
Wenn ich einen datensatz
...haben der laufend geändert wird, warum sollte ich diesen
sortieren? jedes neue element muss doch dann wieder an der
richtigen stelle eingefügt werden und das braucht doch wohl mehr
aufwand als ein benötigtes element über einen index zu suchen den
ich in einen unsortierten datensatz schreibe...
...dh wenn ich auf die daten um einiges öfters lese als
schreibe)...
Alles anzeigen
In den meisten Faellen wird deutlich oefter gelesen als
geschrieben, so 99:1. Nimm zum Beispiel dieses Forum hier und ueberleg
dir, welche daten da abgespeichert werden und wie das Verhaeltnis
schreiben <> lesen ist. Das ist meiner Erfahrung nach fast bei
den meisten Datensaetzen so.
Und was denn index betrifft: Ich weiss nicht wie du das gemeint hast "den
index in einen unsortierten datensatz schreiben"
Aber auch einen solchen index wirst Du wohl am ende durchsuchen muessen,
was dann wieder sortieren bedeutet.
Zitat von Necrowizzard
und dann noch eine frage zu java: ist es effektiver einen vector
oder ein array zu verwenden wenn ich ab und zu elemente aus dem
array entfernen muss (im moment verwende ich ein array und setze
einen typ-wert auf 0 wenn das element nicht betrachtet werden
soll - wäre es da besser gleich einen vector zu
benutzen?)
Alles anzeigen
zunaechst einmal: verwende statt eines vectors eine Liste, z.b
ArrayList. Da ist kein wirklich wichtiger Unterschied dabei, aber
vector == altes Ueberbleibsel aus der Javasteinzeit , ArrayList == neu.
Es gibt auch noch die LinkedList. Die Unterschiede zwischen den Beiden
macht ihr dann in Algodat gleich als naechstes nach dem Sortieren, wenn
ich mich recht erinnere.
Zu deiner eigentlichen Frage: Ich empfehle dir auf Arrays moeglichst ganz
zu verzichten und nur noch Listen zu verwenden, aus zwei Gruenden:
1. seit einigen Jahren werden die Collections in Java (Listen,
Maps usw.) derart gut von den Compilern optimiert, dass es
praktisch keinen nennenswerten Unterschied mehr macht, was du
verwendest.
2. Stelle niemals Performance ueber lesbaren Code, es sei denn du
hast handfeste Zahlen vor der Nase, die belegen, dass dein Programm
wegen genau diesem Stueck code nicht ausreichend performant ist.
Collections sind in Java meiner Meinung nach leichter zu benutzen
als Arrays: sie sind dynamisch und passen besser in die objektorientierte
Struktur von Java, waehrend Arrays eher haessliche Sonderfaelle sind.