[算法笔记]: Python 实现的插入排序

180 阅读1分钟

算法思路

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

Python 实现

def insert_sort(numbers):
    # 默认index 0 为已排序
    for i in range(1, len(numbers)):
        # i 为未排序的起始点
        X = numbers[i]
        temp = i
        # 从已排序的点开始向前扫描直到index为0
        for j in range(i - 1, -1, -1):
            # 如果当前元素大于X, 该元素往后移一位,用temp记录其当前位置
            if (numbers[j] > X):
                numbers[j + 1] = numbers[j]
                temp = j
            else:
                break
        
        # 循环结束,将X插入到应该替换的位置temp
        numbers[temp] = X

    return numbers