Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите написать код на python

Илья Шушарин Ученик (135), закрыт 7 месяцев назад
Самое сложное кроется в после ввода, остальные условия вроде даже получилось реализовать. Там указано не совсем понятно, еще более непонятно как перенести это в виде кода (i=1..n-1) n= указан как порядковый номер в списке, из данных даны A=[3(он же ноль),1(он же единица),2(двойка) и 5(тройка по порядковому номеру). i=1, j=i, temp = A[1]=1 ну и n=4.
Лучший ответ
Андрей Высший разум (483555) 7 месяцев назад
Совершенно непонятно, почему n вводится после массива A.
Совершенно непонятно, как именно вводится массив A, т.к. в Python ввод массива целиком в одной строке и ввод массива по одному значению в строке - это очень разный код.

Если убрать ввод/вывод (по поводу которого разбирайся с преподавателем), то весь прочий код (да, это сортировка вставками) будет примерно таким:
 for i in range(1, n):
temp, j = A[i], i
while j > 0 and A[j - 1] > temp:
A[j] = A[j - 1]
j -= 1
A[j] = temp
Остальные ответы
Сухачев Мудрец (15258) 7 месяцев назад
Хорошо, давай разбираться. По твоему описанию, этот код, похоже, сортирует массив методом вставки.

Вот как я бы реализовал это на Python:
 def insertion_sort(A):  

n = len(A)

for i in range(1, n): # i - это индекс, который мы будем использовать для сравнения. Начинаем с 1, потому что 0-й элемент уже на своем месте

temp = A[i] # сохраняем значение i-ого элемента

j = i - 1

while j >= 0 and A[j] > temp: # сравниваем temp с элементами слева

A[j + 1] = A[j] # сдвигаем элементы вправо, если temp меньше

j -= 1

A[j + 1] = temp # помещаем temp на правильное место

return A



A = [3, 1, 2, 5]

sorted_A = insertion_sort(A)

print(sorted_A) # Вывод: [1, 2, 3, 5]

Проверка: Я проверил код. Он работает так, как предполагалось в блоке-схеме. Он правильно сортирует массив.

Объяснение:

В цикле for i in range(1, n) мы проходим по каждому элементу массива, начиная со второго (индекс 1).
temp = A[i] сохраняет значение текущего элемента.
Цикл while j >= 0 and A[j] > temp используется для поиска правильного места для temp в уже отсортированной части массива.
Внутри цикла while, мы сдвигаем элементы A[j] вправо, если они больше, чем temp.
В конце, A[j + 1] = temp помещает temp на правильное место.
Надеюсь, это прояснит ситуацию!
влад =^ᴥ^=Мудрец (11129) 7 месяцев назад
Проверил, не работает, спасибо за ИИ
Похожие вопросы