我想在一個數組列表中保存3000個int值。然後我想檢索5個最小的整數。什麼數據結構適合這個?保存3000值的數據結構
請注意,我已經使用了Arraylist數據結構。項目在列表中的位置很重要。排序後,位置被改變。我怎樣才能達到我的目的?
我想在一個數組列表中保存3000個int值。然後我想檢索5個最小的整數。什麼數據結構適合這個?保存3000值的數據結構
請注意,我已經使用了Arraylist數據結構。項目在列表中的位置很重要。排序後,位置被改變。我怎樣才能達到我的目的?
假設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);
Collections.sort(** set **)?我很傷心看到它。另外,還有更有效的方法來查找top5然後排序。我真的不喜歡這個答案。 – amit
是啊,有點猜測說'集合'說實話...應該已經驗證真的......謝謝你的提示;回答修改。 –
@Amit,你可以告訴我有效的方法嗎? –
你得給更多的上下文。答案可能是一個排序數組,堆(最小或最大!)樹,或許多其他事物 - 取決於實際問題。 – amit
什麼語言?正如現在寫的,這篇文章可能是SO的主題。 – admdrew
二叉樹...? –