Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何按价格和速度对100张二维汽车图像的10 x 10网格进行排序?_Algorithm_Sorting_Car Analogy - Fatal编程技术网

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

Algorithm 如何按价格和速度对100张二维汽车图像的10 x 10网格进行排序?,algorithm,sorting,car-analogy,Algorithm,Sorting,Car Analogy,下面是一个场景 我有一百件汽车用品。每辆车都有速度属性和价格属性。我想在网格中排列汽车的图像,以便最快和最昂贵的汽车位于右上角,最慢和最便宜的汽车位于左下角,所有其他汽车位于网格中的适当位置 我需要使用什么样的排序算法,你有什么建议吗 编辑:结果不需要精确-事实上我正在处理一个更大的网格,因此,如果汽车大致集中在正确的位置就足够了。基本上,你必须以速度或价格中的一个作为主要参数,然后获得与此主要参数值相同的汽车,并按升序/降序对这些值进行排序,并且根据需要也按升序/降序对主要参数进行排序 例子:

下面是一个场景

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

我需要使用什么样的排序算法,你有什么建议吗


编辑:结果不需要精确-事实上我正在处理一个更大的网格,因此,如果汽车大致集中在正确的位置就足够了。

基本上,你必须以速度或价格中的一个作为主要参数,然后获得与此主要参数值相同的汽车,并按升序/降序对这些值进行排序,并且根据需要也按升序/降序对主要参数进行排序

例子: c1(201000)c2(305000)c3(20500)c4(103000)c5(351000)

让我们假设汽车(速度、价格)是上面列表中的度量,主要是速度

我以最低速度开车

2然后获得所有具有相同速度值的车辆

3按汽车价格的升序排列这些值

4获得具有下一个最小速度值的下一辆车,并重复上述过程

c4(103000)
c3(20500)
c1(20,1000)
c2(305000)
c5(351000)

如果您发布您正在使用的语言,这将对我们有所帮助,因为一些语言结构使其更易于实现。例如,在这种情况下,LINQ让你的生活变得非常轻松

cars.OrderBy(x => x.Speed).ThenBy(p => p.Price);
编辑:

现在你得到了列表,按照将这些汽车项目放入网格,除非你知道将有这么多的预定汽车具有这些值,否则你不能做任何事情,除非像现在这样使用一些固定的网格大小

一种选择是使用非均匀网格,如果您愿意,每行都有特定速度的车辆项目,但这仅适用于您知道将有相当数量的车辆具有相同的速度值的情况

因此,每一排都会有网格中显示的相同速度的汽车


谢谢

基本上,您必须以速度或价格中的一个作为主要参数,然后获得与此主要参数值相同的车辆,并按升序/降序对这些值进行排序,并且根据需要也按升序/降序对主要参数进行排序

例子: c1(201000)c2(305000)c3(20500)c4(103000)c5(351000)

让我们假设汽车(速度、价格)是上面列表中的度量,主要是速度

我以最低速度开车

2然后获得所有具有相同速度值的车辆

3按汽车价格的升序排列这些值

4获得具有下一个最小速度值的下一辆车,并重复上述过程

c4(103000)
c3(20500)
c1(20,1000)
c2(305000)
c5(351000)

如果您发布您正在使用的语言,这将对我们有所帮助,因为一些语言结构使其更易于实现。例如,在这种情况下,LINQ让你的生活变得非常轻松

cars.OrderBy(x => x.Speed).ThenBy(p => p.Price);
编辑:

现在你得到了列表,按照将这些汽车项目放入网格,除非你知道将有这么多的预定汽车具有这些值,否则你不能做任何事情,除非像现在这样使用一些固定的网格大小

一种选择是使用非均匀网格,如果您愿意,每行都有特定速度的车辆项目,但这仅适用于您知道将有相当数量的车辆具有相同的速度值的情况

因此,每一排都会有网格中显示的相同速度的汽车


谢谢

请将此视为两个问题:

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

排序只是一个更精确地定义规则的问题。“最快最贵的优先”不起作用。首先是我的10万英镑劳斯莱斯,最高时速120,还是我的加大马力的迷你车,价格5万英镑,最高时速180


拿到你的名单后,你将如何填写?第一个和最后一个很容易,但是第二个去哪里呢?沿着顶部还是底部?然后下一步,沿着行,沿着列,Z字形?你必须做出决定。之后,编码应该很容易。

将其视为两个问题:

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

排序只是一个更精确地定义规则的问题。“最快最贵的优先”不起作用。首先是我的10万英镑劳斯莱斯,最高时速120,还是我的加大马力的迷你车,价格5万英镑,最高时速180


拿到你的名单后,你将如何填写?第一个和最后一个很容易,但是第二个去哪里呢?沿着顶部还是底部?然后下一步,沿着行,沿着列,Z字形?你必须做出决定。之后,编码应该很容易。

是否需要10x10约束?如果是的话,你必须有十种速度和十种价格,否则图表就没有多大意义。例如,如果最快的车不是最贵的,会发生什么

我建议您将网格大小设置为

  (number of distinct speeds) x (number of distinct prices), 

那么这将是一个(相当)简单的按两个轴排序的情况。

是否需要10x10约束?如果是的话,你必须有十种速度和十种价格,否则图表就没有多大意义。例如,如果最快的车不是最贵的,会发生什么

我建议您将网格大小设置为

  (number of distinct speeds) x (number of distinct prices), 

然后,这将是一个(相当)简单的按两个轴排序的情况。

如果数据来源于数据库,那么您应该在从数据库获取数据时对它们进行排序。这应该只意味着在查询末尾附近,但在
限制
部分之前(其中“速度”和“价格”是
1 - 2   6 - 7
  /   /   /
3   5   8
| /
4