Для проекта мне требуется написать метод, который проходит через обход LinkedList, заполненный 5 миллионами случайных целых чисел, с помощью listIterator, а затем методом get (index) LinkedList.Обход гигантского LinkedList
У меня не возникло проблем с перемещением его с помощью ListIterator, и он завершился примерно в 75 мс. ОДНАКО, после попытки пройти метод get на 5 миллионов целых чисел, я просто прекратил работу примерно 1,5 часа.
Метод getTraverse, который я использовал, например, как код ниже (однако моя группа была сгруппирована с другими методами в классе и была нестатической, но работает одинаково).
public static long getTraverse(LinkedList<Integer> list) {
long start = System.currentTimeMillis();
for (int i = 0; i < linkedList.size(); i++) {
linkedList.get(i);
}
long stop = System.currentTimeMillis();
return stop - start;
}
Это работало прекрасно для LinkedLists от Целые размеров 50, 500, 5000, 50000, и потребовалось некоторое время, но для завершения 500000.
Мой профессор, как правило, крайне неопределенными с инструкциями и очень бесполезно, когда подходили к вопросам. Итак, я не знаю, нарушен ли мой код, или если он увлекся целями в руководящих принципах. Любой вход оценивается.
В моем классе структур данных нам пришлось ждать более 24 часов для сортировки пузырьков, чтобы завершить сортировку массива примерно такого размера. (Который также является алгоритмом O (n^2)), что звучит нормально. – 4castle
Урок, который ваш инструктор пытается вас научить, заключается в том, что 'LinkedList' очень медленны с большим количеством значений. Существует не метод произвольного доступа. Для 'get (n)' он должен начинаться с первого элемента и итерации до 'n'. –
Хорошо, просто убедитесь, что тогда! Я предположил, что это займет очень много времени, но я подумал, что я должен делать что-то не так, чтобы ждать несколько часов. Мой последний проект занял 30 минут. В этом есть смысл! –