Quelqu'un peut-il me dire pourquoi mon programme fonctionne bizarrement. J'essaie de trier list1
dans l'ordre croissant. Ce code fait partie de mon programme de tri rapide que j'essaie d'écrire. Selon ma logique que j'applique dans ce code, et j'ai vérifié manuellement aussi, la sortie devrait être [1,2,3,4,5]. Cependant la sortie sortira pour être [1,2,2,4,5]. Pouvez-vous dire ce qui ne va pas?Mauvaise sortie en Python - selon ma logique
list1=[3,2,1,5,4]
n_list1=len(list1)
count=0
for position1, item1 in enumerate(list1[0:n_list1]):
temp=item1
count=count+1
for position2 in range(count,n_list1):
if list1[position1]>list1[position2]:
list1[position1]=list1[position2]
list1[position2]=temp
temp=list1[position1]
print list1
EDIT: Ce que je suis en train de faire est comme ceci:
je commence à comparer le premier élément avec les éléments suivants (n-1) éléments et remplacez l'élément le plus petit avec le premier. Maintenant, je vais au 2ème élément et le compare avec les éléments (n-2) suivants et permute avec le plus petit élément parmi ces éléments (n-2). Comme ça, je vais de l'avant.
Remarque: Cela fait partie de mon programme quicksort et ce n'est pas en soi un système de chargement rapide. Cette partie est pour le list1
auquel j'attribue des nombres moins que le pivot. Un autre code sera pour list2
où j'attribuerai des nombres plus grands que le pivot.
@Harpreet: Voir ma page mise à jour – pyfunc