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)