2013-06-17 5 views
0

J'ai ce code:Python Insertion Trier Confusion

Array = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 

for c in range(1, len(Array)): 
    if(Array[c]==-1): 
     continue 
    temp = Array[c] 
    i = c 
    d = c-1 
    while(d>=0): 
     if(Array[d]==-1): 
      d-=1 
      continue 
     if(temp>=Array[d]): 
      break 
     Array[i] = Array[d] 
     i = d 
     d-=1 
    Array[i] = temp 

Quand je lance le code tel qu'il est écrit, le tableau final est:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

Cependant, quand je change la dernière ligne « Array [i] = Array [c] » au lieu de "Array [i] = temp", le tableau final est:

[9, 9, 9, 9, 9, 9, 9, 9, 9, 9] 

Cela ne me fait pas de sens. Si "temp" IS Array [c], pourquoi changer cette ligne fait-il la différence?

Répondre

4

temp obtient la valeur de Array[c], mais l'emplacement de stockage Array[c] est remplacée par une autre valeur par la première exécution de Array[i] = Array[d] (depuis i==c initialement). temp est là pour préserver la valeur initiale afin que vous puissiez l'utiliser plus tard, même si Array[c] lui-même a été réinitialisé.

+0

Oh, duh. Je savais que c'était quelque chose de simple que je n'attendais pas. Merci! – bauer2010