这是一个场景。
我有一百个汽车对象。每辆车都有一个表示速度的属性和一个表示价格的属性。我想要在网格中排列汽车的图像,以便最快和最昂贵的汽车在右上角,最慢和最便宜的汽车在左下角,所有其他汽车都在网格中的适当位置。
我需要使用哪种排序算法来解决这个问题,你有什么建议吗?
编辑:结果不需要精确-实际上,我处理的网格要大得多,所以如果汽车大致聚集在正确的位置就足够了。
发布于 2010-01-08 20:35:06
这是一个受Mr Cantor启发的想法
计算最大速度( max(price)
的“距离”
基于a²+b²=c²,距离可能是这样的
sqrt( (speed(car[i])/maxspeed)^2 + (price(car[i])/maxprice)^2 )根据需要(在视觉上)应用权重
结果(镜像,左上角最好):
1 - 2 6 - 7
/ / /
3 5 8
| /
4发布于 2010-01-08 19:51:35
将其视为两个问题:
1:生成排序列表2:将排序列表的成员放入网格
排序只是您更精确地定义您的规则的问题。“最快和最贵的优先”不起作用。我的10万or劳斯莱斯,最高速度120,还是我的增强版Mini,售价50,000 or,最高速度180,哪个先来?
有了你的清单,你将如何填写它?第一个和最后一个很容易,但是第二个去哪里呢?沿着顶部还是向下?那么下一步在哪里,沿着行,沿着列,之字形?你必须做出决定。在此之后,编码应该很容易。
发布于 2010-01-09 04:13:30
我猜你想要的是具有“相似”特征的汽车聚集在附近,另外,成本通常向右增加,速度通常向上增加。
我会试着遵循这种方法。假设你有N辆车,你想把它们放在一个X*Y网格中。假设N == X* Y。
重复步骤
这是解决优化问题的标准“局部搜索”方法。这里的问题基本上是一个简单的组合优化问题。另一种尝试的方法可能是使用自组织映射(SOM),并在矩阵中预先设定速度和成本的梯度。
https://stackoverflow.com/questions/2027270
复制相似问题