Спасибо всем, кто откликнулся.Но, я думаю, я понял.
Допущения:
- Фактический массив размером
N
равен A[]
- Максимальный элемент в массиве
A[]
равенK
- Массив для подсчета частоты элементов с размером
K
равен count[]
- Вспомогательный массив для хранения отсортированных элементов с размером
N
равен sorted[]
Я смотрел на это таким образом, в A[]
есть один прогон для получения максимального элемента и еще один прогон для сохранения частоты каждого элемента.Это займет O(N)
.
Теперь в count[]
есть один прогон, и для каждой итерации существует цикл в count[i]
раз для вставки элементов массива в отсортированном порядке в sorted[]
.Сумма всех элементов в count[]
не может быть больше, чем N
.Таким образом, общее время для этих операций составляет O(N + K)
Следовательно, сложность времени наихудшего случая составляет O(N + K)
.Поправь меня, если я где-то ошибаюсь.