![]() |
1
1
首先,我假设你会使用
一种方法是将整个颜色值视为一个大数值,直到比较结束:
这将首先根据颜色的亮度(假设您编写了亮度比较函数)对颜色进行分组,然后根据颜色的色调进行分组。您可能想交换这些命令,而在内部它们可能更复杂。
可能是 好的 对你来说,但结果远远不是最优的。 实际上,您可能需要为此编写自己的排序函数,而且运行时间可能非常长,因为每种颜色都需要与许多相邻颜色进行比较。你越希望这个分布越理想,这就越像一个人工智能问题,每个颜色都希望尽可能远离相似的颜色。 哦,我刚才想的是,如果将所有的色调和亮度平均,然后将数组分成两半,并试图通过在数组之间交换一些颜色来平衡事物,使每个子数组的平均值尽可能接近整个数组的平均值,可能会产生好的结果。然后将这些数组分成两半并重复。我不认为你会(也可能不会)用这个得到最佳结果,但我认为这可能是相当好的。找到交换什么将是这里最大的问题。 |
![]() |
2
1
你可以试着把你的颜色从HSL颜色空间(我想你用它,因为你提到了色调和亮度)转换成CIELAB。在CIELAB颜色空间中,你可以很容易地计算出颜色的相似性,就像人类的眼睛所感知到的那样。计算出距离后,你就可以对颜色进行分类了。 |
![]() |
3
0
PMG的评论是对的。根据您所说的,没有理由不使用带有客户比较功能的快速排序。查看PMG在其评论中发布的链接以获取更多信息,并确保您的比较功能(即
|
![]() |
4
0
|
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
bairog · 从按属性筛选的对象数组字典中创建值数组 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |
![]() |
Geremia · 2D NumPy数组+1D数组? 4 月前 |
![]() |
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 5 月前 |
![]() |
Paul Williams · 迭代数组时输出有问题 5 月前 |