谁能告诉我为什么我的程序工作怪异。我正在尝试按升序对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)的元素比较,并与第一个交换的最小元素。现在我转到第二个元素,并将其与以下(n-2)个元素进行比较,并与这些(n-2)个元素中的最小元素进行交换。像这样我前进。
注意:这是我的quicksort程序的一部分,它本身不是quicksort。这部分是针对list1
,我指定的数字小于枢轴。另一个代码将用于list2
,我将分配大于数据透视的数字。
@Harpreet:看到我编辑的答案 – pyfunc 2010-09-30 20:43:13