Wie sortiert man Arrays?

  • Hallo Jungens, ich komme Schrittweise voran.

    Hier meine neue Frage, ich habe ein Array voller Actoren namens "OutActors", diese Actoren möchte ich nun sortieren nach ihrer Entfernung zu mir. Also der Actor mit der kürzesten Entfernung zu mir soll ausgegeben werde,


    Hier so mein bisheriger Code, aber irgendwas ist noch falsch:


    OutActors.Sort([](AActor& A, AActor& B) { return A.GetDistanceTo(this) < B.GetDistanceTo(this) });


    Bzw, ich sortiere auch zum ersten mal Arrays, wie sortiert man überhaupt, und wie sortiert man nach bestimmten Eigenschaften der Elemente im Array
    ?

  • Nun, die Grundlagen von Sortieralgorithmen sind da recht vielfältig.


    Es gibt da verschiedene Ansätze. Am einfachsten für den Anfänger zu verstehen, ist wohl Bubblesort. Der Algorithmus ist schon etwas älter. Den haben wir sogar bereits zu meiner Schulzeit mal durchgenommen.


    Bildlich gesehen kannst du dir das so vorstellen wie eine Brause in der verschieden große Kohlensäurebläschen sind. Je größer die Blase, umso schneller steigt sie auf. Deswegen nennt sich das Teil auch Bubblesort.


    Es ist relativ einfach umzusetzen.


    Dein Algorithmus geht alle Einträge des Arrays durch und vergleicht halt die Werte die sortiert werden sollen. Also mit Array[i] < Array[i+1]. Trifft das zu, dann werden die Arraypositionen getauscht. Das macht man dann so lange, bis eine vollständige Sortierung stattgefunden hat. Allerdings ist Bubblesort jetzt nicht die schnellste Sortiermethode.


    Es gibt verschieden Algorithmen, die inzwischen wesentlich schneller sind. Quicksort zum Beispiel.


    Aber danach kannst du auch googeln, Sortieralgorithmen, und dann bekommst du eine ganze Liste auch mit Beispielen. Danach kannst du dir dann raussuchen welchen du am besten verstehst und der auch zu deiner Lösung am besten passt.

    • Offizieller Beitrag

    nutze tmap und sortiere sie danach.


    • Hilfreich

    In diesem Fall musst du noch this innerhalb der eckigen Klammern schreiben, damit das this, mit in das Lambda reingenommen wird.

    Die eckigen Klammern, sind dazu da, um Variablen die außerhalb der Lambda funktion stehen, in das Lambda rein zu bringen.


    Edit: Wie Tomar sagt, gibt es bessere Sortier Algorithmen, aber meistens lohnt es sich erst so richtig, wenn man viele Daten sortieren muss. Was vielleicht wichtig ist, bevor du sortierst ist Filtern immer gut.

    Da ich glaube dass du dich gerade mit AI beschäftigst, wäre auch das EQS system einen Blick Wert, hier werden viele Operationen auch Asynchron ausgeführt, von daher hast du somit oft weniger Last auf den Main Thread.

    Wie immer ist aber alles immer eine Sache des Use-Case, sorg Erstmal dafür dass die Dinge funktionieren, du bist ja zur Zeit am Lernen. Von daher eins nach dem anderen.