插入排序(Python)

时间:2024-10-27 07:40:08

插入排序是一种简单直观的排序算法,其工作原理类似于我们平时整理扑克牌或书籍的方式。它的核心思想是将数组分为已排序和未排序两部分,每次从未排序部分取出一个元素,将其插入到已排序部分的适当位置,从而保持已排序部分的有序性。

插入排序的原理

1)初始状态:假设数组的第一个元素是已排序的,其余元素是未排序的。
2)遍历:从数组的第二个元素开始,依次取出每一个元素。
3)插入:对于每一个取出的元素,将其与已排序部分的元素进行比较,找到其应该插入的位置,并将其插入。
4)重复:重复上述步骤,直到所有元素都被插入到已排序部分,此时整个数组即为有序。

Python代码实现

def insertion_sort(arr):  
    # 遍历从第二个元素到最后一个元素  
    for i in range(1, len(arr)):  
        key = arr[i]  # 当前需要插入的元素  
        j = i - 1  
        # 将key插入到已排序部分的适当位置  
        while j >= 0 and key < arr[j]:  
            arr[j + 1] = arr[j]  # 将arr[j]向右移动一位  
            j -= 1  
        arr[j + 1] = key  # 插入key  
    return arr  
  
# 测试代码  
if __name__ == "__main__":  
    arr = [12, 11, 13, 5, 6]  
    print("排序前的数组:", arr)  
    sorted_arr = insertion_sort(arr)  
    print("排序后的数组:", sorted_arr)