首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按价格和速度对包含100个汽车图像的10x10网格进行排序?

如何按价格和速度对包含100个汽车图像的10x10网格进行排序?
EN

Stack Overflow用户
提问于 2010-01-08 19:38:37
回答 8查看 689关注 0票数 1

这是一个场景。

我有一百个汽车对象。每辆车都有一个表示速度的属性和一个表示价格的属性。我想要在网格中排列汽车的图像,以便最快和最昂贵的汽车在右上角,最慢和最便宜的汽车在左下角,所有其他汽车都在网格中的适当位置。

我需要使用哪种排序算法来解决这个问题,你有什么建议吗?

编辑:结果不需要精确-实际上,我处理的网格要大得多,所以如果汽车大致聚集在正确的位置就足够了。

EN

回答 8

Stack Overflow用户

发布于 2010-01-08 20:35:06

这是一个受Mr Cantor启发的想法

计算最大速度( max(price)

  • normalize )并将所有速度和价格数据放入范围0..1
  • 对于每辆车,计算到可能的最大

的“距离”

基于a²+b²=c²,距离可能是这样的

代码语言:javascript
复制
sqrt( (speed(car[i])/maxspeed)^2 + (price(car[i])/maxprice)^2 )

根据需要(在视觉上)应用权重

  • 按“最佳”方块中的“最佳”汽车排序(在您的情况下为右上角)
  • 以之字形遍历网格并填充排序列表中的下一辆汽车

结果(镜像,左上角最好):

代码语言:javascript
复制
1 - 2   6 - 7
  /   /   /
3   5   8
| /
4
票数 7
EN

Stack Overflow用户

发布于 2010-01-08 19:51:35

将其视为两个问题:

1:生成排序列表2:将排序列表的成员放入网格

排序只是您更精确地定义您的规则的问题。“最快和最贵的优先”不起作用。我的10万or劳斯莱斯,最高速度120,还是我的增强版Mini,售价50,000 or,最高速度180,哪个先来?

有了你的清单,你将如何填写它?第一个和最后一个很容易,但是第二个去哪里呢?沿着顶部还是向下?那么下一步在哪里,沿着行,沿着列,之字形?你必须做出决定。在此之后,编码应该很容易。

票数 5
EN

Stack Overflow用户

发布于 2010-01-09 04:13:30

我猜你想要的是具有“相似”特征的汽车聚集在附近,另外,成本通常向右增加,速度通常向上增加。

我会试着遵循这种方法。假设你有N辆车,你想把它们放在一个X*Y网格中。假设N == X* Y。

  1. 将所有N辆车随机放在网格中locations.
  2. Define,这是一个计算网格中总乱序的指标;例如,计算汽车对C1=(x,y)和C2=(x',y')的数量,使得C1速度>C2速度但是y< y‘加上汽车对C1=(x,y)和C2=(x',y')使得C1价格>C2价格但是x
  3. 运行以下算法:
    1. 计算当前错误排序度量M
    2. 枚举网格中的所有汽车对并计算错误排序度量M‘如果您交换汽车
    3. 交换减少度量最多的那对汽车,如果您交换了两辆车,则从步骤1
    4. Finish

重复步骤

  • ,如果发现任何这样的对

这是解决优化问题的标准“局部搜索”方法。这里的问题基本上是一个简单的组合优化问题。另一种尝试的方法可能是使用自组织映射(SOM),并在矩阵中预先设定速度和成本的梯度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2027270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档