#python #sorting
Вопрос:
def bubble(v):
l = len(v)
for i in range(l-1):
for j in range(l-i-1):
if v[j]>v[j 1]:
v[j 1],v[j] = v[j],v[j 1]
return v
Если я попробую bubble([5,4,3,2,1]), он напечатает 43215, я хочу, чтобы код продолжал сравнивать, где я должен исправить?
Ответ №1:
Я думаю, что вам просто нужно исправить отступ в вашем возвращении. Попробуйте поместить его на тот же уровень первого цикла for; в противном случае вы вернете результат (и, следовательно, выйдете из своей функции) на первой итерации вашего внешнего цикла.
Комментарии:
1. На самом деле все, что находится между тем
def
иreturn
другим, неправильно — нуждается в большем отступе.2. Да, я согласен, но я предположил, что это была просто опечатка, потому что в противном случае код не показал бы поведение, описанное Строберри. Но, конечно, вы совершенно правы: все строки рядом с первой и последней должны быть отступами на один уровень больше
Ответ №2:
return
должна быть вкладка слева. Если вы поместите его сюда, он остановит выполнение после первой итерации (первого цикла for).
def bubble(v):
l = len(v)
for i in range(l-1):
for j in range(l-i-1):
if v[j]>v[j 1]:
v[j 1],v[j] = v[j],v[j 1]
return v