Was wäre eine effiziente Möglichkeit, ein 1D-Array von Unity
Colors
(sie sind ein RG? Ich habe eine Reihe von 921.600 Color
s (a 1280 von 720 Pixel Bild) Gibt es eine Art von Radix-Sortierung dafür oder weißt du von irgendeiner anderen effizienten Art, so viele Farben zu sortieren? Mit der Sortierung meine ich, dass ich einige Farben habe (123, 17, 2), (5, 16, 16)), (5, 2, 150) usw. Um diese zu sortieren, sortiere ich nach R, dann nach G und nach B (es gibt wahrscheinlich einen Namen dafür, aber ich weiß es nicht), so dass die sortierte Liste (5, 2, 150, (5, 16, 16), (123, 17, 2).Wie effizient sortieren eine Menge von RGB-Farben in Einheit
Antwort
Ich sehe keinen anderen Weg als Brute Force. Der beste Weg wäre Array.Sort<T>
wie im Kommentarabschnitt beschrieben.
Erstellen Sie diese Sortiermethode:
private int SortColors(Color a, Color b)
{
if (a.r < b.r)
return 1;
else if (a.r > b.r)
return -1;
else
{
if (a.g < b.g)
return 1;
else if (a.g > b.g)
return -1;
else
{
if (a.b < b.b)
return 1;
else if (a.b > b.b)
return -1;
}
}
return 0;
}
Und dann ist es wie folgt verwenden:
Color[] colors = new Color[] { new Color (5, 2, 150), new Color (5, 16, 16), new Color (123, 17, 2) };
Array.Sort<Color> (colors, SortColors);
Wenn Sie nur die „hellsten“ Farbe zu finden versuchen. Sie müssen sie nicht sortieren. Du könntest sie einfach durchlaufen und die hellsten finden.
Dies ist sehr, sehr viel Pseudo-Code, aber Sie bekommen die Idee.
Color brightest = new Color(0, 0, 0);
for (int i = 0; i < count; i++)
{
Color current = list[i];
if (current > brightest) // whatever your comparing means
{
brightest = current;
}
}
Es tut mir leid wenn es war unklar. Ich versuche nicht, die "hellste" Farbe im Rahmen zu finden. Ich versuche, die hellste Farbe für dieses Bild zu finden. Zum Beispiel –
Entschuldigung, ich drücke Enter. Zum Beispiel, wenn das Bild ein Bild von einem Backsteingebäude wäre, würde ich wahrscheinlich nach einem Rosa oder einem Gelb suchen. Obwohl auf dem Bild kein Rosa oder Gelb ist, ist es die "herausragendste" Farbe (von allen möglichen RGB-Farben), die in diesem Bild enthalten sein könnte. –
- 1. Sortieren nach Menge True Booleans?
- 2. effizient umschreiben (Rebase -i) eine Menge Geschichte mit Git
- 3. Effizient Get Subset von Strings "startingWith" aus einer Menge
- 4. wie eine zusätzliche temporäre Einheit in der Sammlung von LINQ
- 5. Android - Wie effizient laden Sie eine große Menge Text in einem TextView?
- 6. Wie konvertiere ich eine Menge von Polygonen in eine Bitmap?
- 7. effizient sortieren mit 90% in 1 bis 100
- 8. Eine Sammlung von Regexen effizient durchsuchen
- 9. Doctrine2: Abhängigkeitsdiagramm für eine Menge von Entitäten
- 10. Wie eine Menge Geld in Java
- 11. Wie erstellt man effizient eine Liste von WriteModel in Mongo?
- 12. Wie eine Matrix von allen Spalten sortieren
- 13. mysql insert handle eine menge von werten
- 14. eine Einheit Ergebnis ausschließen
- 15. Effizient eine ByteString in eine hexadezimale Darstellung
- 16. Wie eine Reihe von Wörterbüchern sortieren
- 17. Sortieren eine table_for in Schienen activeadmin
- 18. nur eine bestimmte Menge von Daten senden
- 19. Kombinieren von Hashes für eine geordnete Menge
- 20. Wie man eine Datei rückwärts lesen effizient
- 21. Ist eine gegebene Menge von Gruppenelementen eine Gruppe von Nebenklassenrepräsentanten?
- 22. Wie Randomisierung von Panels in Einheit
- 23. eine zufällige Menge von Zahlen Umkehren
- 24. Eine Reihe von Zeichen sortieren
- 25. Wie Einheit Fenster ios von der Einheit übergeben
- 26. Wie vstack effizient eine Sequenz von großen numpy Array-Chunks?
- 27. Wie effizient ist eine PHP-Bildressource?
- 28. JPA: Wie Verbund eine Einheit von Spalten aus mehreren Tabellen (keine Einheit mulitple Tabellen speichern)
- 29. Eine Menge Importe in Python handhaben
- 30. Wie man eine RDD effizient durchquert
Was machst du, um eine dreidimensionale Menge zu sortieren? – Ben
Verwenden Sie 'Array.Sort' und geben Sie einen' IComparer' ein, der weiß, wie man bestimmt, ob eine 'Farbe' kleiner, größer oder gleich einer anderen' Farbe' ist. – juharr
Wenn Ihr Array sehr groß wird, könnten Sie zum Beispiel einen bitonischen Sortieralgorithmus in einem Compute Shader implementieren und Ihr Array auf der GPU sortieren. – TheDjentleman