我正在为销售iPhone配件的公司创建Python程序。该程序将具有一个函数,该函数接受列表的列表作为参数,其中每个列表元素包含描述产品的两个值 - 价格和估计质量(整数值)。我想找到一个项目的价格低于另一个的情况,但其质量高于另一个的情况。因此,例如,我将通过这个列表,我的功能:用于比较二维数组中元素的算法
some_inventory = [[11.95, 10], [7.95, 12], [6.50, 3],...]
在这个列表中的元素[7.95,12]将有更低的价格和更高的质量比[11.95 10]。如果这种情况存在,我想返回一个布尔值,如good_deal = True。
some_inventory中有大约10万个这样的列表元素。我可以使用暴力方法将每个价格与所有其他价格进行比较,然后检查它们的质量,但这非常缓慢。我试着按价格先排序,对于价格相同的商品,我会消除质量较差的商品,并将最高品质的商品添加到新列表中(例如,如果有[4.50,2],[4.50,5] ,[4.50,8]我只添加了[4.50,8]到一个新列表中)。但这似乎仍然过于耗时。
是否有更高效的算法来进行这些比较?它不一定要用python,伪代码或者C/C++都可以。
你能更具体地说明你想要这个算法做什么吗?它的行为如何?它会返回什么? – joshreesjones 2014-10-19 01:04:43
@ mathguy54如果存在一种情况,产品比其他产品便宜但质量较高,我只希望程序返回布尔值,如good_deal = True。所以good_deal在开始时会被设置为False的默认值。 – MNRC 2014-10-19 01:06:48
按质量先排序然后再打破价格最低的关系 – 2014-10-19 01:08:01