2015-04-15 5 views
0

Im пытается сделать двоюродный пузырь сортировать. на нечетных итерациях он пузырится и сортируется вправо, даже при итерациях он пузырится и сортируется влево.Почему я получаю IndexError: индекс индекса вне диапазона в этом коде?

def main(): 

    myList = [10,9,8,7,6,5,4,3,2,1] 
    lengthOfList = len(myList) 
    firstThresh = 0 
    lastThresh = lengthOfList 
    oddPass = True 
    while firstThresh <= lastThresh: 
     if oddPass == True: 
      for index in myList[firstThresh:lastThresh]:     
       if myList[index] > myList[index+1]:  <================== 
        temp = myList[index] 
        myList[index] = myList[index+1] 
        myList[index+1] = temp 
        print(myList) 
        oddPass = False 
      lastThresh -= 1 
     else: 
      for index in reversed(myList[firstThresh:lastThresh]): 
       if myList[index] < myList[index-1]: 
        temp = myList[index] 
        myList[index] = myList[index-1] 
        myList[index+1] = temp 
        print(myList) 
        oddPass = False 
      firstThresh += 1 
main() 

Ошибка: строка 22, в bubbleSort2Way если MyList [индекс]> MyList [индекс + 1]: IndexError: список индексов вне диапазона

Я положил стрелку, где проблема , Я новичок в программировании, поэтому, если его очевидно, мне жаль! Любая помощь будет замечательной!

ответ

0

Линия

for index in myList[firstThresh:lastThresh]: 

использует значения из myList, а не индекс. Таким образом, код пытается получить доступ к 11-му элементу (индекс «10») в списке только с 10 элементами и получить ошибку вне диапазона.

Чтобы использовать индекс в цикле, измените эту строку

for index, value in enumerate(myList[firstThresh:lastThresh]): 
+0

Спасибо большое! Тем не менее, он работал, как только 10 попадает вправо, он дает ту же ошибку на том же месте. Вы знаете, почему это так? Визуализировано: [9, 10, 8, 7, 6, 5, 4, 3, 2, 1] [9, 8, 10, 7, 6, 5, 4, 3, 2, 1] [9, 8 , 7, 10, 6, 5, 4, 3, 2, 1] [9, 8, 7, 6, 10, 5, 4, 3, 2, 1] [9, 8, 7, 6, 5 , 10, 4, 3, 2, 1] [9, 8, 7, 6, 5, 4, 10, 3, 2, 1] [9, 8, 7, 6, 5, 4, 3, 10 , 2, 1] [9, 8, 7, 6, 5, 4, 3, 2, 10, 1] [9, 8, 7, 6, 5, 4, 3, 2, 1, 10] –

+0

Вы также изменили эту строку 'для индекса в обратном порядке (myList [firstThresh: lastThresh]):' использовать функцию перечисления? 'для индекса, значение в перечислении (reverseed (myList [firstThresh: lastThresh])):' –

+0

Добро пожаловать! Не беспокойтесь. У всех нас есть плохие ночи. : P Если бы это ответили на ваш вопрос, тогда, пожалуйста, распространяйте любовь, приняв ее как ответ. –

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