首页 > 解决方案 > 对发送给函数的数组进行排序而不进行赋值

问题描述

我对数组的排序方式没有任何疑问。我在问我发送到排序函数的随机选择的数组是如何自动排序的,即使我已将输出分配给不同的数组。

bubbleList = createRandomArray()
sortedList = BubbleSort(bubbleList)
print(bubbleList)
print(sortedList)

上面编写的一段代码的示例输出如下:

[-15, -14, -12, -12, -9, -6, -5, -4, 0, 10]
[-15, -14, -12, -12, -9, -6, -5, -4, 0, 10]

但是,如果我打印未排序的列表而不将其发送到函数,则没有排序。然后输出如下:

[-14, -6, -15, 0, -5, -9, -4, -12, -12, 10]
[-15, -14, -12, -12, -9, -6, -5, -4, 0, 10]

会不会是python自动赋值的原因?非常感谢。

添加了冒泡排序:

def BubbleSort(inlist):
n = len(inlist)
for i in range(n-1, -1, -1):
    for j in range(0, i):
        if not(inlist[j] < inlist[j+1]):
            inlist[j], inlist[j+1] = inlist[j+1], inlist[j]
return inlist

标签: python

解决方案


BubbleSort您正在使用的方法的实现似乎正在对数组进行排序。也就是说,它正在修改分配给该列表对象的内存。并非所有 python 排序方法都以这种方式工作。sorted(list)例如不会修改传递的列表。


推荐阅读