Array von CGPoints sortieren
-
13-12-2019 - |
Frage
Ich versuche herauszufinden, wie man ein Array von CGPoints am schnellsten/saubersten sortieren kann.Ich denke, ich könnte dies mithilfe von Schleifen erreichen, aber das ist möglicherweise nicht die schnellste und ich hoffe, dass es nicht die sauberste Methode ist.Ich möchte ein Array zufälliger CGPoints nehmen und sie beispielsweise nach der kleinsten x-Koordinate bis zur größten oder kleinsten x-Koordinate sortieren Und y-Koordinate zum größten.
Lösung
Nach dem richtigen Kommentar von Chuck habe ich die Antwort mit der SorteningComparator-Methode aktualisiert:
Hier ist der vollständige Code mit Beispieldaten:
Zuerst generieren wir 100 zufällige Werte, die wir in das Array eingeben:
generasacodicetagpre.und hier ist der eigentliche Code, um das Array zu sortieren:
generasacodicetagpre.schließlich können wir überprüfen, dass das Array sortiert wurde, indem Sie ihn drucken:
generasacodicetagpre.Andere Tipps
Das C qsort()
Funktion ist wahrscheinlich die beste Wahl, wenn Sie nur über ein einfaches Array von CGPoints verfügen.Etwas wie das:
int compareXCoords(CGPoint *a, CGPoint *b) {
return b->x - a->x;
}
// Later:
CGPoint points[100];
// initialize points somehow
qsort(points, 100, sizeof(CGPoint), compareXCoords);
// points is now sorted by the points' x coordinates
Je nach meinem Kommentar ist es eine gute Lösung, die sie auf ein NSMUTABLELARRAY einfügen, der die Sortierung entscheidet.
Sie müssen so etwas tun:
generasacodicetagpre.Vielleicht hat mein Code einige Fehler, ich kann nicht prüfen, ob es jetzt richtig ist.