AD0DE412Для такого подойдёт даже массив со сдвигом всех элементов (массовой операцией). Так как это маленький массив, то тут разрешены многие запрещённые в общем случае приёмы. Если ты заглянешь в исходник сишной функции qsort(), то там для мелких массивов применяется простая квадратная сортировка (то ли сортировка выбором там, то ли сортировка пузырьком). Хотя в соответствии с идеей функции и её названием она должна всё сортировкой Хоара сортировать. Так что и с хит-парадом тоже можно применить медленные массивы, так как ты никак не заметишь, что они там применены.
топ хит европа плюс
Другое дело, когда рассматриваются большие области данных. Там каждое лишнее движение (лишняя операция) играет роль. И вот, как я говорил выше, связные списки применются внутри файловых систем, внутри процессов (они работают не напрямую с диском, а через буферную подсистему, так как диск - это медленное устройство, а буферы находятся в оперативной памяти). Вот в файловых системах файл на 5Gb представляет из себя длиннющий связный список из ма-а-аленьких блоков, где каждый маленкий блок лежит на диске и хранит немножко данных и хранит указатель на следующий маленький блок, а тот тоже так же всё хранит. И когда ты читаешь текстовый файл, то ты читаешь этот “целый и неделеимый” файл такими ма-а-аленькими порциями, пока не дойдёшь до последнего блока, у которого указатель на следующий блок равень нулю. Так вот этот файл может храниться вообще в произвольном порядке и быть разбросанным по всему диску. Вот таким макаром работают и программы для восстановления данных. Они ищут такие цепочки и пытаются прочитать непрерывные и какие-то разрывы даже соединяют. Так они могут восстанавливать не весь файл, а как бы с выпавшими кусками посередине.