Python中选择排序和冒泡排序的区别

发布时间:2024年01月12日

选择排序和冒泡排序是两种常用的排序算法,它们的主要区别在于排序过程中元素的交换方式和时间复杂度的表现。

  1. 元素交换方式:
  • 选择排序:每一轮比较选择最小(或最大)的元素,并将其与当前位置的元素进行交换。
  • 冒泡排序:每一轮比较相邻的两个元素,如果它们的顺序不正确,则交换它们的位置。
  1. 时间复杂度:
  • 选择排序:无论输入数据如何,选择排序的时间复杂度始终为O(n^2),其中n为待排序元素的个数。因为每一轮都需要从未排序的部分选择最值,所以无论输入数据的有序程度如何,都需要进行相同数量的比较和交换操作。
  • 冒泡排序:无论输入数据如何,冒泡排序的时间复杂度始终为O(n^2),其中n为待排序元素的个数。因为每一轮都需要比较相邻元素并可能进行交换,所以无论输入数据的有序程度如何,都需要进行相同数量的比较和交换操作。

下面是选择排序和冒泡排序的代码示例:

选择排序:

def selection_sort(arr):
    n = len(arr)
    for i in range(n-1):
        min_index = i
        for j in range(i+1, n):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]
    return arr

arr = [64, 25, 12, 22, 11]
sorted_arr = selection_sort(arr)
print("排序后的数组:", sorted_arr)

运行结果:

冒泡排序:

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

arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print("排序后的数组:", sorted_arr)

运行结果:

这里的例子是使用 Python 编写的,但选择排序和冒泡排序的思路是通用的,可以在其他编程语言中进行实现。

综上所述,选择排序和冒泡排序的主要区别在于元素交换方式,选择排序每一轮选择最值元素进行位置交换,而冒泡排序每一轮比较相邻元素并进行位置交换。它们的时间复杂度都为O(n^2),所以在大规模数据的排序时性能较差。

若以上存在什么问题,请大家在评论区说出或者私信我,谢谢大家。

文章来源:https://blog.csdn.net/m0_74346238/article/details/135540841
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。