我想找到一种可以解决以下问题的算法:
考虑 4 组数字:
- 第 1 组:[10、100、1000],
- 第 2 组:[101、15、2000],
- 第 3 组:[20、1500、100],
- 第 4 组:[150、3000、13]。
我需要从每组中选择一个数字,以便四个选定数字的最大值和最小值之间的差异在所有可能的组合中最小。
在此示例中,数字 10、15、20、13 给出了差异 10,它是最小的。上述问题的答案是 10、15、20、13。
我想知道是否有一种算法可以解决这个问题,并且对于大量组和每个组中的条目数量也相对较好。
编辑:@aurelian-tutuianu 提出了一种复杂度为的算法,该算法涉及对每个组进行排序。我想知道如果不可能对这些组进行排序,那么最好的算法是什么。例如,对于组
- 第 1 组:[a1,a2,a3],
- 第 2 组:[b1,b2,b3],
- 第 3 组:[c1,c2,c3],
- 第 4 组:[d1,d2,d3],
我可以找到所有元素之间的成对相似性,但无法对它们进行排序。