2014-02-06 39 views
-4

我想在一個數組列表中保存3000個int值。然後我想檢索5個最小的整數。什麼數據結構適合這個?保存3000值的數據結構

請注意,我已經使用了Arraylist數據結構。項目在列表中的位置很重要。排序後,位置被改變。我怎樣才能達到我的目的?

+2

你得給更多的上下文。答案可能是一個排序數組,堆(最小或最大!)樹,或許多其他事物 - 取決於實際問題。 – amit

+0

什麼語言?正如現在寫的,這篇文章可能是SO的主題。 – admdrew

+2

二叉樹...? –

回答

1

假設Java是您選擇的語言:

如果你知道在先進的全值,而你不打算增加新的值或刪除現有的,那麼你可以使用一個數組:

int[] array = new int[3000]; // or simply int[] array = {your values}; 
array[0] = ... 
array[1] = ... 
... 
Arrays.sort(array); 

否則,你可以使用一個列表:

List<Integer> list = new ArrayList<Integer>(); 
list.add(...); 
list.add(...); 
... 
Collections.sort(list); 
+1

Collections.sort(** set **)?我很傷心看到它。另外,還有更有效的方法來查找top5然後排序。我真的不喜歡這個答案。 – amit

+0

是啊,有點猜測說'集合'說實話...應該已經驗證真的......謝謝你的提示;回答修改。 –

+0

@Amit,你可以告訴我有效的方法嗎? –