python实现冒泡排序算法的两种方法

  • Post category:Python

冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的两个元素,并按照大小交换它们的位置,直到整个列表都是有序的。在Python中,我们可以使用两种方法来实现冒泡排序算法。

方法一:使用两个循环实现冒泡排序

以下是使用两个循环实现冒泡排序的Python代码示例:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

在这个示例中,我们定义了一个bubble_sort()函数,它接收一个列表作为参数。我们使用两个嵌套的循环来遍历列表,并比较相邻的两个元素。如果前一个元素大于后一个元素,则交换它们的位置。最后,我们返回排序后的列表。

以下是使用bubble_sort()函数对列表进行排序的示例:

arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print(sorted_arr)

在这个示例中,我们创建了一个列表,并使用bubble_sort()函数对它进行排序。最后,我们输出排序后的列表。

输出结果为:

[11, 12, 22, 25, 34, 64, 90]

方法二:使用一个循环和一个标志位实现冒泡

以下是使用一个循环和一个标志位实现冒泡排序的Python代码示例:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        swapped = False
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
                swapped = True
        if not swapped:
            break
    return arr

在这个示例中,我们同样定义了一个bubble_sort()函数,它接收一个列表作为参数。我们使用一个循环来遍历列表,并使用一个标志位来记录是否发生了交换。如果前一个元素大于后一个元素,则交换它们的位置,并将标志位设置为True。如果在一次遍历中没有发生交换,则说明列表已经有序,我们可以直接退出循环。最后,我们返回排序后的列表。

以下是使用bubble_sort()函数对列表进行排序的示例:

arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print(sorted_arr)

在这个示例中,我们创建了一个列表,并bubble_sort()函数对它进行排序。最后,我们输出排序后的列表。

输出结果为:

[11, 12, 22, 25, 34, 64, 90]

结论

冒泡排序是一种简单但率较低的排序算法。在Python中,我们可以使用两种方法来实现冒泡排序算法。第一种方法使用两个循环来遍历列表,并比较相邻的两个元素。第二种方法使用一个循环和一个标志位来遍历列表,并记录是否发生了交换。在实际开发中,我们可以根据具体的需求选择不同的方法来实现冒泡排序算法。