python - Python 中的冒泡排序

标签 python arrays sorting bubble-sort

<分区>

我在 python 中有这个 bubbleSort 函数,效果很好。

def bubbleSort(arr):
n = len(arr)

# Traverse through all array elements
for i in range(n):

    # Last i elements are already in place
    for j in range(0, n-i-1):

        # traverse the array from 0 to n-i-1
        # Swap if the element found is greater
        # than the next element
        if arr[j] > arr[j+1] :
            arr[j], arr[j+1] = arr[j+1], arr[j]

我是 python 的新手,我无法理解 if 语句下面的代码。 arr[j], arr[j+1] = arr[j], arr[j+1] 是如何工作的?

最佳答案

如果您使用过其他编程语言,您可能不熟悉使用一条语句为多个变量赋值的概念。

这就是这里发生的事情。

Ii I x, y = 3, 4 那么 x 的值为 3,y 的值为 4

在这种情况下

arr[j], arr[j+1] = arr[j+1], arr[j] 可以重写为

arr[j] = arr[j+1]
arr[j+1] = arr[j]

但是,这不会交换变量(如@Dimitar 所说,这发生在单个语句中)。它确实需要重写为

temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp

我希望你能明白为什么

关于python - Python 中的冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48536540/

相关文章:

python - 按第一列中的值对数据进行分组

python - Pygame,旋转图像而无需在每次迭代中加载图像

algorithm - 使用缓冲区对串行数据进行排序

python - 颜色在 pyqtgraph 中的工作方式不像在 matplotlib 中那样工作

php - 需要 php pdo 内爆数组并在 mysql 中插入多行

javascript - VueJS,将数据从组件传递到另一个组件

javascript - 如何在数组中分配测验答案的位置?

java - 在 JTable 中插入后如何进行排序(RowSort)?

python - *有效地*使用 RPy(或其他方式)将数据帧从 Pandas 移动到 R

python - Django 如何在模板中设置隐藏输入的值