【问题标题】:Algorithm to Compare Price of Sorted List比较排序列表价格的算法
【发布时间】:2020-10-27 06:40:38
【问题描述】:

所以今天,我想实现一个程序(java 或 python),它比较两个排序的食品数组的元素并输出两个数组中该项目的最低价格。

数组将采用 {{name, price}} 的形式。将有两个数组进行比较。这可能看起来不是很清楚,所以这里有一些代码:

数组 1:{{"Apple" 4.5}, {"Banana" 3.1}, {"Dragonfruit", 5.2}, {"Dorian", 1.5}}

数组 2:{{"Apple", 3.1}, {"Dragonfruit", 4.5}}

输出:{{"Apple", 3.1}, {"Dragonfruit", 4.5}}

正如您在此处看到的,这 2 个数组按名称按字母顺序排序。两个数组也不必具有相同的长度。所以总而言之,它应该:

  1. 如果相同,请先比较项目名称:
  2. 输出成本更低的那个。

我在某处听说这是一种顺序排序?之前搜索过这个词,但是不知道怎么实现。

【问题讨论】:

  • 尝试自己寻找解决方案,如果您的实施有具体问题,请回来,我们将帮助您解决具体问题。 Stack Overflow 不是构建代码的地方。
  • “java 或 python”是什么意思?你想让我们为你做决定吗?为什么不是其他语言?简而言之,第一步是确定编程语言
  • 首先选择您的语言。
  • 到目前为止你尝试过什么?请发布您的代码,以便我们进行调试。
  • 香蕉和多里安呢?你只想要所有列表中都存在的水果吗?您的输入是相应语言的列表列表,还是需要首先解析的字符串?

标签: java python arrays algorithm compare


【解决方案1】:

连接这两个列表并按字典顺序对它们进行排序,首先按名称,然后按价格(如果有关系)。

然后输出同名后的记录即可。

{"Apple", 3.1}
{"Apple", 4.5}
{"Banana" 3.1}
{"Dorian", 1.5}} 
{"Dragonfruit", 4.5}
{"Dragonfruit", 5.2}

这适用于两个以上的列表。

【讨论】:

  • 更新了,我以前的版本是输出所有不同的项目。
【解决方案2】:

公共类TestDemo {

public static void main(String[] args) {
    List<Fruit> list1 = new ArrayList<Fruit>();
    List<Fruit> list2 = new ArrayList<Fruit>();
    List<Fruit> list3 = new ArrayList<Fruit>();
    list1.add(new Fruit("Dragonfruit", 5.2));
    list1.add(new Fruit("Dorian", 1.5));
    list1.add(new Fruit("Apple", 4.5));
    list1.add(new Fruit("Banana", 3.1));
    Collections.sort(list1);
    list2.add(new Fruit("Dragonfruit", 4.5));
    list2.add(new Fruit("Apple", 3.1));
    Collections.sort(list2);
    for (Fruit fruit1 : list2) {
        for (Fruit fruit2 : list1) {
            if (fruit1.getName().equals(fruit2.getName())) {
                if (fruit1.getPrice() <= fruit2.getPrice()) {
                    list3.add(fruit1);
                } else {
                    list3.add(fruit2);
                }
            }
        }
    }
    System.out.println(list1);
    System.out.println(list2);
    System.out.println(list3);
}

}

公共类 Fruit 实现 Comparable {

private String name;
private Double price;
@Override
public int compareTo(Fruit fruit) {

    return this.name.compareTo(fruit.name);
}

}

【讨论】:

  • 这非常低效,并且在价格相同的情况下会失败。
猜你喜欢
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多