Мне интересно, почему сортировка ведра имеет время выполнения O (n + k), если мы используем ведра, реализованные со связанными списками. Например, предположим, что у нас есть этот вход:
n = no of element= 8
k = range = 3
array = 2,2,1,1,1,3,1,3
Ведра будут выглядеть так:
1: 1 -> 1 -> 1 -> 1
2: 2 -> 2
3: 3 -> 3
Общее время, затрачиваемое на вставку в эти ведра, равно O (n), предполагая, что мы храним указатель на хвост в связанных списках.
Для удаления мы должны перейти в каждое ведро, а затем удалить каждый node в этом ковше. Следовательно, сложность должна быть O (K * средняя длина списка ссылок в ковше), поскольку мы перемещаем каждый связанный список.
Тем не менее, я читал, что сложность сортировки ковша - O (n + k). Почему это не согласуется с моим анализом? Пожалуйста, исправьте меня, поскольку я все еще изучаю вычислительную сложность.