如何解决比较排序清单价格的算法
所以今天,我想实现一个程序(java或python),该程序比较两个排序的食品阵列的元素,并输出两个阵列中最低的食品价格。
该数组将采用{{name,price}}的形式。这些数组中有两个可以比较。这看起来可能不太清楚,所以下面是一些代码:
数组1:{{"Apple" 4.5},{"Banana" 3.1},{"Dragonfruit",5.2},{"Dorian",1.5}}
数组2:{{"Apple",3.1},4.5}}
输出:{{"Apple",4.5}}
如您在此处看到的,这2个数组按名称按字母顺序排序。 2个数组的长度也不必相同。因此,总而言之,它应该:
- 如果名称相同,则先比较商品名称:
- 输出成本更低的产品。
我在某处听说这是一种依序排序?我以前曾经搜索过这个词,但不知道如何实现。
解决方法
将两个列表连接起来,并按字典顺序对其进行排序,首先在名称上,然后在价格上(如果有联系)。
然后就足以输出后跟相同名称的记录。
{"Apple",3.1}
{"Apple",4.5}
{"Banana" 3.1}
{"Dorian",1.5}}
{"Dragonfruit",4.5}
{"Dragonfruit",5.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实施可比的{
private String name;
private Double price;
@Override
public int compareTo(Fruit fruit) {
return this.name.compareTo(fruit.name);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。