将前N个结果保存到固定数组 - 顺序

时间:2013-04-11 08:11:11

标签: java arrays

我有一个庞大的数字列表,我正在对每条记录进行一些计算,例如:

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),因为没有排序。

3 个答案:

答案 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)

如果只有5个元素,迭代数组并保存最多5个元素就不那么难了。

您可以查看thisthathere以获得更全面的答案。