Как показать процесс в Python: InsertionSort - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь написать программу на Python для сортировки вставок , но проблема в том, что я хочу, чтобы она показывала процесс или раунд процесса, как это, но я не знаю как.

вход : 9, 8, 7, 10, 2

Данные в списке равно [9, 8, 7, 10, 2]

Раунд 1 : 9, 8, 7, 10, 2 8, 9, 7, 10, 2

Раунд 2 : 8, 9, 7, 10, 2 7, 9, 8, 10, 2 7, 8, 9, 10, 2

Раунд 3 : 7, 8, 9, 10, 2 7, 8, 9, 10, 2 7, 8, 9, 10, 2 7, 8, 9, 10, 2

Раунд 4 : 2, 8, 9, 10, 7 2, 7, 9, 10, 8 2, 7, 8, 10, 9 2, 7, 8, 9, 10

Сортированный массив : 2, 7, 8, 9, 10

Конец программы

Я действительно новичок в этом, пожалуйста, помогите мне. Thx:)

a=[]
i=0
while i<=4:
        a.insert(i,int(input("Enter your number: ")))
        i=i+1
print ('Data in list is',a)
j=1 
while j<=5:
    i=0 
    while i<=3:
        if a[i]>=a[i+1]:
            b=a[i]
            a[i]=a[i+1]
            a[i+1]=b
        i = i+1
    j = j+1

print ('Sorted array is :',a)
print ('End of program:')

1 Ответ

0 голосов
/ 11 мая 2019

Прежде всего, я бы рассмотрел цикл for, который является сокращением для того, что именно вы делаете с while.Что касается вашего фактического вопроса, ключ в том, что вам нужно распечатать раунд в цикле.Таким образом, поскольку ваша программа выполняет итерацию по списку a, вы можете отслеживать текущий прогресс a VIA print.Смотрите ниже:

a = []
for i in range( 0, 5 ):
    a.insert( i, int( input( "Enter your number: " ) ) )

print( 'Data in list is', a )

for j in range( 1, 6 ):
    for i in range( 0, 4 ):
        if a[ i ] >= a[ i+1 ]:
            b = a[ i ]
            a[ i ] = a[ i+1 ]
            a[ i+1 ] = b
    print( 'Round', j, ':', a )

print ( 'Sorted array is :', a )
print ( 'End of program:' )
...