*schäm* sort() sortiert ja auch und indiziert nicht nur ...
@KinNeko: Bei kleinen Arrays fällt der Zeitaufwand für zwei Schleifen wohl nicht so ins Gewicht ...
-=* Titus *=-
| php pro |
|nerd for life|
"""""""""""""""
the PHP resource
Dringende Frage zu Arrays
Collapse
This topic is closed.
X
X
-
übersehen
Punkt 3) geht noch schneller: sort($a); hat den gleich Effekt
<b>NICHT</b> $a = sort($a); <b>!!!</b>
-=* Titus *=-
| php pro |
|nerd for life|
"""""""""""""""
the PHP resource
Leave a comment:
-
vergessen..
Shit..den Algorithmus hatte ich vergessen. Sobald ich die Klausur bestanden habe ist immer alles weg.
Der Algorithmus ist definitiv besser. Aber nur bei größeren Arrays. Bei kleinen dauert das Erzeugen zu lange.
Zudem erhöhter Speicherplatzaufwand.
Mußt am besten je nach Situation entscheiden.
Leave a comment:
-
ähm ... nicht bei wenigen Dubletten schneller ... in jedem Fall:
Aufwand: O(n)
Anzahl der Vergleiche im best, average und worst case: 2*n
Leave a comment:
-
nicht einfacher, aber bei wenigen Doubletten schneller:
(angenommen, dein Array heißt $a und UNBEDINGT eindimensional)
1) $b = array(); for (reset($a); $x=each($a)$b[$x[1]][] = $x[0];
Jetzt hast du in $b ein Array indiziert mit den Werten von $a und den einem Array aus Indizes jedes Auftretens.
2) for (reset($b); $x=each($b)if (is_array($x[1]) && count($x[1]>1))for ($i=1; $i<count($x[1]); $i++) unset($a[$x[1][$i]]);
Die äußere Schleife wandert durch das Zaehler-Array $b; ist ein Wert in $a mehr als einmal vorhanden, so werden in der inneren Schleife alle Vorkommen bis auf das erste aus $a gelöscht.
3) $a = explode(';',implode(';',$a));
indiziert das Array neu, falls es von 0 fortlaufend indiziert sein soll.
-=* Titus *=-
| php pro |
|nerd for life|
"""""""""""""""
the PHP resource
Leave a comment:
-
..
Zweiverschachtelte Schleifen und dann vergleichsoperation. Bei Gleichheit löschen.
Laufzeit : (n-1)! Schritte
Leave a comment:
-
Dringende Frage zu Arrays
Gibt es ein Befehl in PHP mit dem ich ein Array auf doppelte Einträge durchsuchen und anschließend löschen kann? Beziehungsweise wie könnte man so etwas machen ?
SebastianTags: None
Leave a comment: