📜  气泡排序,选择排序和插入排序之间的比较(1)

📅  最后修改于: 2023-12-03 15:11:01.962000             🧑  作者: Mango

气泡排序,选择排序和插入排序之间的比较

在排序算法中,气泡排序,选择排序和插入排序都是比较基础的排序算法。

气泡排序

气泡排序是一种简单的排序算法。它重复地遍历要排序的列表,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历列表的工作是重复地进行直到没有再需要交换,这时列表就已经排序完成。

以下是一个气泡排序的代码实现:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        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
选择排序

选择排序是一种简单直观的排序算法。它的工作原理是:首先在未排序的序列中找到最小元素,然后存放到序列的起始位置;接着,再从剩余未排序的元素中继续寻找最小/大元素,然后放到已排序序列的末尾。重复这个过程,直到所有元素都排序完毕。

以下是一个选择排序的代码实现:

def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        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
插入排序

插入排序是一种简单直观的排序算法。它的工作原理是:将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。

以下是一个插入排序的代码实现:

def insertion_sort(arr):
    n = len(arr)
    for i in range(1, n):
        key = arr[i]
        j = i-1
        while j >= 0 and key < arr[j]:
            arr[j+1] = arr[j]
            j -= 1
        arr[j+1] = key
    return arr
比较

三种排序算法都是比较基础的排序算法,它们的时间复杂度大致相同,都是O(n²),但在实际使用中,它们的效率是有所差异的。

气泡排序由于其每次都要交换相邻的两个元素,所以交换次数较多,效率较低。选择排序是每次选出最小的元素直接放到已排序的序列中,所以交换次数比冒泡排序要少,效率较高。插入排序是将一个元素插入到已排序的序列中,不像选择排序和冒泡排序每次都要选取最小的元素或者交换相邻元素,所以对于小规模的数据排序,插入排序要优于选择排序和冒泡排序。

以上就是三种排序算法之间的比较,可以根据具体的情况选择合适的排序算法。