【Python】经典算法总结之插入排序

基本思想:

将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增 1 的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。

算法原理:

1、将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

2、从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面)

动图演示:

算法稳定性:

 相同的数据元素将保持原有位置不变,所以该算法是稳定的 。

实现代码:

def insertionSort(arr):
    for i in range(len(arr)):
        preIndex = i-1
        current = arr[i]
        while preIndex >= 0 and arr[preIndex] > current:
            arr[preIndex+1] = arr[preIndex]
            preIndex-=1
        arr[preIndex+1] = current
    return arr

a = list(map(int,input().split()))
for x in insertionSort(a):
    print(x,end=" ")

输入:1 3 4 8 2 5

输出:1 2 3 4 5 8

你可能感兴趣的:(算法,排序算法,算法)