如何按价格和速度对二维100个汽车图像的10 x 10网格进行排序?

Cen*_*zer 1 sorting algorithm car-analogy

这是场景.

我有一百个汽车对象.每辆车都有速度物业和物业价格.我想在车厢中安排汽车的图像,以便最快和最昂贵的汽车位于右上方,最慢和最便宜的汽车位于左下方,所有其他汽车都位于电网的适当位置.

我需要使用哪种排序算法,你有什么提示吗?

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

dev*_*vio 7

只是康托尔先生启发的一个想法:

  • 计算最大(速度)和最大(价格)
  • 将所有速度和价格数据标准化为0..1
  • 对于每辆车,计算可能最大值的"距离"

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

sqrt( (speed(car[i])/maxspeed)^2 + (price(car[i])/maxprice)^2 )
Run Code Online (Sandbox Code Playgroud)

应用加权(视觉上)必要的

  • 按距离排序汽车
  • 将"最佳"汽车放在"最佳"广场(在您的情况下右上角)
  • 在之字形中走网格,并在排序列表中填写下一辆车

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

1 - 2   6 - 7
  /   /   /
3   5   8
| /
4
Run Code Online (Sandbox Code Playgroud)

  • +1.更好的是,他可能没有一个网格,而是一个正方形区域,根据计算的标准化坐标,将汽车作为点放置在它们的确切位置.工具提示将显示当前查看的汽车的实际图像和详细信息. (2认同)
  • 表现说明(不能自己) - 没有必要使用sqrt. (2认同)

djn*_*jna 5

将此视为两个问题:

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

排序只是您更准确地定义规则的问题."最快,最昂贵的第一"不起作用.首先是我的10万英镑劳斯莱斯,最高速度120,或者我的加速Mini,售价5万英镑,最高速度180?

得到你的清单后你将如何填写?第一个也是最后一个很容易,但第二个去哪儿了?沿着顶部还是向下?那么接下来,沿着行,沿着列,锯齿形?你必须做出决定.之后编码应该很容易.

  • 你为什么这么认为?诊断zig-zag可能会提供类似车辆的好邻居.我的主要观点是,一旦你明确了你的要求,代码往往就会失败,通过澄清你的帮助思考如何(以及避免写错了.) (3认同)