Array 114. Дан массив A размера N (\(\leq\) 6). Упорядочить его по возрастанию методом сортировки простыми вставками: сравнить элементы \(A_1\) и \(A_2\) и, при необходимости меняя их местами, добиться того, чтобы они оказались упорядоченными по возрастанию; затем обратиться к элементу \(A_3\) и переместить его в левую (уже упорядоченную) часть массива, сохранив ее упорядоченность; повторить этот процесс для остальных элементов, выводя содержимое массива после обработки каждого элемента (от 2-го до N-го). При выполнении описанных действий удобно использовать прием «барьера», записывая очередной элемент перед его обработкой в дополнительный элемент массива \(A_0\).

Решение на Python 3

import random

N = random.randrange(2,10)
#N = 3
#a = [N-i for i in range(N)]
a = [random.randrange(1,7) for i in range(N)]
#a = [3, 4, 2]
print("N = ", N)
print("Initial Array:")
print(a)

for i in range(1,N) :
flag = False
x = a[i]
k = i - 1
while k >= 0 :
if x >= a[k] :
break
else :
a[k+1] = a[k]
flag = True
k -= 1
if flag and k >= -1:
a[k+1] = x

print("Step ",i)
print(a)
print()

# elif
print("Modified Array:")
print(a)