2014-02-06 4 views
-4

Я хочу сохранить 3000 int value в arraylist. Затем я хочу получить 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 (** комплект **)? Мне больно это видеть. Кроме того, есть намного более эффективные способы поиска top5, а затем сортировки. Мне очень не нравится этот ответ. – amit

+0

Да, вроде бы догадался, что на 'Set', если честно ... должен был проверить действительно ... спасибо за подсказку; ответ пересмотрен. –

+0

@ Давай, ты можешь предложить мне эффективные способы? –

Смежные вопросы