Dringende Frage zu Arrays

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Titus
    replied
    *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

    Leave a comment:


  • Titus
    replied
    ü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:


  • admin
    replied
    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:


  • cassikov
    replied
    Ich bedank mich bei euch beiden, es hat mir weiter geholfen

    Leave a comment:


  • Titus
    replied
    ä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:


  • Titus
    replied
    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:


  • admin
    replied
    ..

    Zweiverschachtelte Schleifen und dann vergleichsoperation. Bei Gleichheit löschen.

    Laufzeit : (n-1)! Schritte

    Leave a comment:


  • andi
    started a topic Dringende Frage zu Arrays

    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 ?

    Sebastian
Working...
X