#arrays #sorting #matrix #time-complexity
Вопрос:
Подумайте, что у меня есть такая юная картина, как эта ->
10 11 12 15
16 18 20 22
25 27 30 34
35 40 44 Infinity
Бесконечность обозначает пустой элемент
- У меня есть алгоритм, в котором я помещаю элемент в правом нижнем углу, затем сдвигаю его как можно выше, а затем как можно левее.
- Я вставляю 8.
10 11 12 15
16 18 20 22
25 27 30 34
35 40 44 8
- Переместите его как можно выше, а затем как можно левее. 15,22,34 смещены.
8 10 11 12
16 18 20 15
25 27 30 22
35 40 44 34
- Теперь, вернувшись после рекурсивного вызова, я помещаю 15 в нужное место. 22 в правильном месте. Затем 34 в правильном месте.
8 10 11 12
15 16 18 20
22 25 27 30
34 35 40 44
По моему мнению , временная сложность всей операции равна O(m*n), где m, n-размеры матрицы.
Алгоритм
- Поместите элемент в правый нижний угол.
- Переместите его как можно выше.
- Затем переместите его как можно левее.
- После завершения рекурсивного вызова поместите перемещенные элементы в нужное место.
Правильно ли я определил временную сложность? O(m*n)
Комментарии:
1. Я не понимаю, где находится рекурсивная часть, но перемещение одного элемента на его место, на мой взгляд, равно O(m n), а затем вы делаете это k раз.
2. Что такое k здесь?