Dringende Frage zu Arrays

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

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

    Einen Kommentar schreiben:


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


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


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

    Einen Kommentar schreiben:


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


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


  • admin
    antwortet
    ..

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

    Laufzeit : (n-1)! Schritte

    Einen Kommentar schreiben:


  • andi
    hat ein Thema erstellt 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
Lädt...
X