Array 115. Дан массив A размера N. Не изменяя данный массив, вывести номера его элементов в том порядке, в котором соответствующие им элементы образуют возрастающую последовательность. Использовать метод «пузырьковой» сортировки (см. задание Array112), модифицировав его следующим образом: создать вспомогательный целочисленный массив номеров \(I\), заполнив его числами от 1 до N ; просматривать массив A, сравнивая пары элементов массива A с номерами \(I_1\) и \(I_2\), \(I_2\) и \(I_3\), ... и меняя местами соответствующие элементы массива \(I\), если левый элемент пары больше правого. Повторив описанную процедуру просмотра N-1 раз, получим в массиве \(I\) требуемую последовательность номеров.

Решение на Python 3

import random

N = random.randrange(2,10)
#a = [2*(i+1) for i in range(N)]
A = [random.randrange(0,10) for i in range(N)]
I = [i for i in range(N)]
print("N = ", N)
print("Array A:")
print(A)
print("Array I:")
print(I)

for i in range(1,N) :
for j in range(0,N-1) :
if A[I[j]] > A[I[j+1]] :
I[j], I[j+1] = I[j+1], I[j]

print("Sorted Array:")
for i in range(0,N) :
print(A[I[i]],end=", ")

##print()
##print("Array A:")
##print(A)
##print("Array I:")
##print(I)