数据科学家成长之旅

关注 机器学习,深度学习,自然语言处理,数学

排序算法(3)——插入排序

__author__ = 'steven'
# coding=utf-8
'''插入排序(Insertion Sort)

    它的工作原理是通过构建有序序列,对于未排序数据,
    在已排序序列中从后向前扫描,找到相应位置并插入。

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

    平均时间复杂度为 O(n^2),该算法稳定.
    注:对于基本有序的数组,使用直接插入排序的效率是很高的.
'''


list = [5, 8, 1, 4, 2, 7, 3, 6]
# list_ascended = [1, 2, 3, 4]
# list_descended = [5, 4, 3, 2]

def insert_sort(list):
    n = len(list)
    for i in range(1, n):
        print(list)
        for j in range(i, 0, -1):  #  以i为起点,0为终点,向前遍历
            if list[j] < list[j - 1]:
                list[j], list[j - 1] = list[j - 1], list[j]
            else:
                break
    return list

print(insert_sort(list))
# print('-----')
# print(insert_sort(list_ascended))
# print('-----')
# print(insert_sort(list_descended))


posted on 2017-03-04 19:56  会飞的蝸牛  阅读(164)  评论(0编辑  收藏  举报

导航