*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
Einklappen
Dieses Thema ist geschlossen.
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
Einen Kommentar schreiben:
-
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.
Einen Kommentar schreiben:
-
Ich bedank mich bei euch beiden, es hat mir weiter geholfen
Einen Kommentar schreiben:
-
ähm ... nicht bei wenigen Dubletten schneller ... in jedem Fall:
Aufwand: O(n)
Anzahl der Vergleiche im best, average und worst case: 2*n
Einen Kommentar schreiben:
-
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
Einen Kommentar schreiben:
-
..
Zweiverschachtelte Schleifen und dann vergleichsoperation. Bei Gleichheit löschen.
Laufzeit : (n-1)! Schritte
Einen Kommentar schreiben:
-
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 ?
SebastianStichworte: -
Einen Kommentar schreiben: