我有一个庞大的数字列表,我正在对每条记录进行一些计算,例如:
123 456 789 213 546 789 78 156 489 952 456 789 ......
并且在处理完列表之后我将结果顺序(它们不存储在任何结构中),例如
0.156 0.895 0.12 0.145 0.146 0.222 0.123 0.489 ........
是否有一些练习,如何将前5个结果保存到固定数组?
第1步:
[0.156]
第二步:
[0.895 0.156]
第五步:
[0.895 0.156 0.146 0.145 0.12]
第p步:
[0.895 0.489 0.222 0.156 0.146]
它应该具有复杂度O(n),因为没有排序。
答案 0 :(得分:1)
基本上你很容易有一个5元素数组说
[88,77,66,55,44]
每个新号码搜索数组并插入 approriate possition 如果有的话(可以使用基本的for / while循环)。
即。如果你得到60,阵列就会变成
[88,77,66,60,55]
在获得5个元素之前,有一些问题就像在开始时一样。由于这是一个练习,我将让你写代码
答案 1 :(得分:1)
如果您使用LinkedList
并且只插入前5个元素,我认为这样可行。
public List<Double> getTop(List<Double> inputs) {
List<Double> top = new LinkedList<>();
for (Double input : inputs) {
int i = 0;
while (i < 5 && i < top.size() && input < top.get(i))
i++;
if (i < 5)
top.add(i, input);
}
return top.subList(0, 5);
}
答案 2 :(得分:0)