def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
# Move elements of arr[0..i-1], that are greater than key,
# to one position ahead of their current position
while j >= 0 and key < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
# Print the current state of the array after insertion
print(" ".join(map(str, arr)))
# Reading input
N = int(input())
array = list(map(int, input().split()))
# Perform insertion sort and print intermediate states
insertion_sort(array)
Тайлер СигмаПрофи (515)
4 месяца назад
сорян, пасту с чата жпт закинул
def insertion_steps(arr):
n = len(arr)
for i in range(1, n):
key = arr[i]
j = i - 1
# Перемещаем элементы arr[0..i-1], которые больше ключа, на одну позицию вперёд
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
# Печатаем текущее состояние массива после вставки, если оно изменилось
if j + 1 != i:
print(" ".join(map(str, arr)))
# Чтение входных данных
N = int(input())
array = list(map(int, input().split()))
# Выполняем вставки и выводим промежуточные состояния
insertion_steps(array)
такое пойдет?
Продемонстрируйте работу метода сортировки вставками по возрастанию. Для этого выведите состояние данного массива после каждой вставки на отдельных строках. Если после рассмотрения очередного элемента массив не изменился, то его выводить не нужно. Если массив упорядочен изначально, то следует не выводить ничего.
Входные данные
На первой строке дано число N
(1≤N≤100
) — количество элементов в массиве. На второй строке задан сам массив: последовательность натуральных чисел, не превышающих 109
.
Выходные данные
Выведите строки (по количеству вставок) по N
чисел каждая.
Примеры
Ввод
2
2 1
Вывод
1 2
Ввод
4
2 1 5 3
Вывод
1 2 5 3
1 2 3 5