Python选择排序调试

Python选择排序调试,python,python-3.x,Python,Python 3.x,我正在尝试编写一个选择排序函数。出现了一个错误,我不知道如何解决 修复它。这是我的代码: def selection_sort(numbers): outlist=[] for i in range(len(numbers)-1): minIndex=i for j in range(i+1,len(numbers)): if numbers[j]<numbers[minIndex]: minIndex=j numbe

我正在尝试编写一个选择排序函数。出现了一个错误,我不知道如何解决 修复它。这是我的代码:

def selection_sort(numbers):
  outlist=[]
  for i in range(len(numbers)-1):
    minIndex=i
    for j in range(i+1,len(numbers)):
        if numbers[j]<numbers[minIndex]:
            minIndex=j
    numbers[minIndex],numbers[i]=numbers[i],numbers[minIndex]
    numbers = [str(i) for i in numbers]
    #print(numbers)
    outlist.append(numbers)
    #print(outlist)
  return outlist
输出:

43 42 18 14 3 45 24 14 50 26
3 14 18 42 43 45 24 14 50 26

3 14 14 42 43 45 24 18 50 26

3 14 14 18 43 45 24 42 50 26

3 14 14 18 24 45 43 42 50 26

3 14 14 18 24 26 43 42 50 45

3 14 14 18 24 26 42 43 50 45

3 14 14 18 24 26 42 43 50 45

3 14 14 18 24 26 42 43 45 50

3 14 14 18 24 26 42 43 45 50
但它应该是这样的:

3 42 18 14 43 45 24 14 50 26

3 14 18 42 43 45 24 14 50 26

3 14 14 42 43 45 24 18 50 26

3 14 14 18 43 45 24 42 50 26

3 14 14 18 24 45 43 42 50 26

3 14 14 18 24 26 43 42 50 45

3 14 14 18 24 26 42 43 50 45

3 14 14 18 24 26 42 43 50 45

3 14 14 18 24 26 42 43 45 50
此外,在我添加了“打印(数字)”之后,它显示在我将“数字”放入“大纲视图”之前,每个步骤都是正确的:

['3', '42', '18', '14', '43', '45', '24', '14', '50', '26']

['3', '14', '18', '42', '43', '45', '24', '14', '50', '26']

['3', '14', '14', '42', '43', '45', '24', '18', '50', '26']

['3', '14', '14', '18', '43', '45', '24', '42', '50', '26']

['3', '14', '14', '18', '24', '45', '43', '42', '50', '26']

['3', '14', '14', '18', '24', '26', '43', '42', '50', '45']

['3', '14', '14', '18', '24', '26', '42', '43', '50', '45']

['3', '14', '14', '18', '24', '26', '42', '43', '50', '45']

['3', '14', '14', '18', '24', '26', '42', '43', '45', '50']

注意深度复制

import copy
def selection_sort(numbers):
  outlist=[]
  for i in range(len(numbers)-1):
    minIndex=i
    min_value = numbers[minIndex]
    for j in range(i+1,len(numbers)):
        if numbers[j]<numbers[minIndex]:
            minIndex=j
    numbers[minIndex],numbers[i]=numbers[i],numbers[minIndex]
    outlist.append(copy.deepcopy(numbers))
 #    print(outlist)
  return outlist

if __name__ == "__main__":
    num = [ 6, 9, 2,5,4,3,1,7]
    print selection_sort(num)
导入副本
def选择_排序(编号):
大纲=[]
对于范围内的i(长度(数字)-1):
minIndex=i
最小值=数字[最小索引]
对于范围(i+1,len(数字))内的j:

如果数字[j]可以尝试
outlist+=numbers
而不是
outlist.append(numbers)