1

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

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 个结果保存到固定数组?

第一步:

[0.156]

第二步:

[0.895 0.156]

第五步:

[0.895 0.156 0.146 0.145 0.12]

第 n 步:

[0.895 0.489 0.222 0.156 0.146]

它应该具有复杂度 O(n),因为没有排序。

4

3 回答 3

1

基本上很容易你有一个 5 元素数组说

[88、77、66、55、44]

对于每个新数字,在数组中搜索并插入适当的位置 (如果有的话)(可以使用基本的 for / while 循环)。

即如果你得到 60 数组将变为

[88、77、66、60、55]

在你获得 5 个元素之前,有一些问题。由于这是一个练习,我将让您编写代码

于 2013-04-11T08:20:49.587 回答
1

如果您使用 aLinkedList并且仅在前 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);
}
于 2013-04-11T08:22:40.627 回答
0

In case of only 5 elements, iterating over the array and saving max 5 elements is not so hard.

You can take a look at this, that and here for a more comprehensive answers.

于 2013-04-11T08:20:42.453 回答