Может кто-нибудь сказать мне, почему моя программа работает странно.Я пытаюсь отсортировать list1
в порядке возрастания.Этот код является частью моей программы быстрой сортировки, которую я пытаюсь написать.Согласно моей логике, которую я применяю в этом коде, и я также проверил вручную, результат должен быть [1,2,3,4,5].Однако на выходе получается [1,2,2,4,5].Можете ли вы сказать, что происходит не так?
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
РЕДАКТИРОВАТЬ: Я пытаюсь сделать так:
Я начинаю сравнивать первый элемент с следующимn-1) элементы и поменяйте местами самый маленький элемент с первым.Теперь я перехожу ко 2-му элементу и сравниваю его со следующими (n-2) элементами и меняю местами наименьший элемент среди этих (n-2) элементов.Таким образом я двигаюсь вперед.
Примечание: Это часть моей программы быстрой сортировки, которая сама по себе не является быстрой сортировкой.Эта часть предназначена для list1
, которому я присваиваю числа, меньшие чем ось.Другой код будет для list2
, где я буду назначать числа, больше чем pivot.