Переполнение стека с помощью алгоритма сортировки слиянием - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь заказать файл с 577000 строк в год.Я помещаю информацию о какой строке в двусвязный список.Чтобы упорядочить файл, я попытался реализовать алгоритм сортировки слиянием, но, поскольку алгоритм является рекурсивным при заказе большого количества информации, алгоритм не работает из-за переполнения стековой памяти.Может кто-нибудь помочь попытаться найти более эффективный алгоритм, который не дает сбоя и не занимает много времени?

Из комментария:

Рейнджер дат с 1730 по 2013

1 Ответ

0 голосов
/ 20 мая 2018

Вам не нужна сложная сортировка.Учитывая, что вам нужно покрыть только около 300 разных лет, это то, что я бы сделал.

Создайте array[300] связанного списка.Индекс ноль - это связанный список для 1730 года. Индекс 1 - это связанный список для 1731 года.

Теперь, когда вы читаете новую запись из файла, вы можете найти индекс массива, вычтя 1730 из годачитать.Затем вы добавляете элемент в связанный список по этому индексу.

Когда весь файл будет прочитан, вы объединяете весь связанный список в один связанный список, начиная с индекса 0.

Теперь у вас есть связанный список, отсортированный по годам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...