2013-04-11 22 views
1

我有一個巨大的數字列表,我做了一些計算,在每個記錄,如:保存前N個結果,以固定陣列 - 順序

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] 

第2步:

[0.895 0.156] 

第5步:

[0.895 0.156 0.146 0.145 0.12] 

第N步:

[0.895 0.489 0.222 0.156 0.146] 

它應該有複雜性O(n),因爲沒有排序。

+0

[從Java數組獲得前四名的最大值]的可能重複(http://stackoverflow.com/questions/14122526/getting-top-four-maximum-value-from-java-array) – BobTheBuilder 2013-04-11 08:24:12

回答

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); 
} 
+0

謝謝,你告訴我的方式:-) – gaffcz 2013-04-12 07:42:26

0

如果只有5個元素,遍歷數組並保存最大5個元素並不難。

你可以看看this,thathere以獲得更全面的答案。

1

基本上它是很容易你有5元件陣列說

[88,77,66,55,44]

用於通過所述陣列中的每個新號碼搜索並在插入如果有的話(可以使用基本的/ while循環)

即如果得到60的陣列將成爲

[88,77,66,60,55]

有像在起動問題你得到5元素之前。由於這是一個練習,我會留給你編寫代碼