📜  插入排序python(1)

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

插入排序介绍

插入排序是一种简单直观的排序算法。它的基本思想是将待排序的记录按其关键字值的大小一个一个插入到一个已经排好序的有序序列中,直到所有的记录都插入到有序序列为止。

具体步骤如下:

  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
  5. 将新元素插入到该位置后
  6. 重复步骤2~5

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

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

其中,arr是待排序的数组,函数首先从第一个元素开始,依次将每个元素插入到已排序的序列中。

可以用如下方式调用函数:

arr = [12, 11, 13, 5, 6]
print(insertion_sort(arr))

运行程序,输出结果如下:

[5, 6, 11, 12, 13]

可以看到,经过一次插入排序后,原数组已经被排好序了。

时间复杂度分析

插入排序的时间复杂度为O(n^2)。

在最坏情况下,排序算法的比较次数和交换次数均为n(n-1)/2。

在最好情况下,排序算法的比较次数为n-1,交换次数为0。

因此,插入排序适用于比较小的数组排序,对于大规模的数据排序效率较低。

总结

插入排序是一种简单易懂的排序算法,通过将待排序的元素一个一个地插入到已经排好序的序列中,最终将整个序列排序。

虽然插入排序的时间复杂度较高,但对于小规模的数据排序效果不错。同时,插入排序的代码实现较为简单,容易理解和掌握。