📜  插入排序和选择排序的区别(1)

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

插入排序和选择排序的区别

插入排序和选择排序是两种常见的排序算法,它们都属于简单排序算法,最差时间复杂度均为$O(n^2)$。

插入排序

插入排序将数组分为两部分,第一部分为已排序的部分,开始时未排序元素为第二部分,每次从未排序部分取一个元素,按照大小顺序插入到已排序部分的合适位置中。

以下是插入排序的Python实现:

def insert_sort(arr):
    for i in range(1, len(arr)):
        j = i
        while j > 0 and arr[j] < arr[j-1]:
            arr[j], arr[j-1] = arr[j-1], arr[j]
            j -= 1
    return arr
选择排序

选择排序是每次选出未排序部分中最小(或最大)的元素,将其与未排序部分的第一个元素交换位置。这样,每次选择一个最小(或最大)元素后,未排序部分的长度减一。

以下是选择排序的Python实现:

def select_sort(arr):
    for i in range(len(arr)):
        min_index = i
        for j in range(i+1, len(arr)):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]
    return arr
两种排序算法的区别
  • 插入排序是将未排序元素依次插入到已排序的元素中,而选择排序是每次从未排序部分中选择一个最小(或最大)元素,放到已排序部分的末尾。
  • 插入排序对几乎已排序的数组具有很好的性能,而选择排序的时间复杂度与输入的数组顺序无关。
  • 插入排序每次将元素插入到有序数组中,可以边插入边排序,而选择排序需要先找出最大(或最小)元素再交换位置。

总体来说,插入排序算法更适用于小数据量数组的排序,而选择排序则更适用于大数据量数组的排序。

参考资料:维基百科:插入排序维基百科:选择排序