什么是对 Unity
Colors
的一维数组进行排序的有效方法(它们是 RG?我有一个包含 921,600 个 Color
的数组>s(一张 1280 x 720 像素的图片)。是否有一种基数排序类型,或者您是否知道任何其他有效的方法来对这么多颜色进行排序?
通过排序,我的意思是说我有一些颜色,(123, 17, 2),(5, 16, 16),(5, 2, 150),等等。为了对这些进行排序,我先按 R 然后 G 然后 B 排序(有可能是这个的名称,但我不知道)所以排序的列表将是 (5, 2, 150), (5, 16, 16), (123, 17, 2)。
最佳答案
除了蛮力,我看不到任何其他方法。最好的方法是使用 Array.Sort<T>
如评论部分所述。
创建这个排序方法:
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;
}
然后像这样使用它:
Color[] colors = new Color[] { new Color (5, 2, 150), new Color (5, 16, 16), new Color (123, 17, 2) };
Array.Sort<Color> (colors, SortColors);
关于c# - 如何在 Unity 中高效地对大量 RGB 颜色进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37412371/