2016-10-06 1 views
1

Я хочу поместить числа от самых маленьких до самых больших.Ошибка выполнения определения self insertion_sort в python3

NO.1 преуспеваем

def insertion_sort(list): 
    for index in range(1,len(list)): 
     value = list[index] 
     i = index-1 
     while i >=0: 
      if value < list[i]: 
       list[i+1]=list[i] 
       list[i] = value 
       i = i-1 
      else : 
       break 
a=[2,1,4,3,6,7,9,5] 
insertion_sort(a) 
print(a) 

NO.2 не удалось

def insertion_sort(list): 
    for index in range(1,len(list)): 
     value = list[index] 
     i = index - 1 
     while i>=0: 
      if value > list[i]: 
       i=i-1 

      else : 
       list[i+1]=list[i] 
       list[i]=value 
      break 


a=[1,3,2,7,4,6,5] 
insertion_sort(a) 
print(a)  

, когда я побежал второй, он вернулся [1, 2, 3, 4, 6, 5, 7]

Я не знаю, почему, и если я удалить break , во втором, он не вернет результат, почему? Я думал, что цикл for закроется.

+0

Почему вы не используете 'sorted' или' np.sort() '? – MMF

+0

'break'is не очень с отступом – MMF

ответ

0

Реализация сортировки вставки (без дозорного устройства) должна выглядеть;

def insertion_sort(list_): 
    for index in range(1,len(list_)): 
     value = list_[index] 
     i = index - 1 
     while i >= 0 and list_[i] > value : 
      list_[i + 1] = list_[i] 
      list_[i] = value 
      i = i - 1 
    return list_ 

запомнить Также не назвали список вашего аргумента list, потому что это питон класс встроенным.

Смежные вопросы