python + 插入排序

时间复杂度为O(n^2),基本思想就是将无序序列插入到有序序列中。例如要将数组arr=[4,2,8,0,5,1]排序,可以将4看做是一个有序序列(图中用蓝色标出),将[2,8,0,5,1]看做一个无序序列。无序序列中2比4小,于是将2插入到4的左边,此时有序序列变成了[2,4],无序序列变成了[8,0,5,1]。无序序列中8比4大,于是将8插入到4的右边,有序序列变成了[2,4,8],无序序列变成了[0,5,1]。以此类推,最终数组按照从小到大排序。

def insert_sort(list):
    _len = len(list)
    for i in range(1, _len):
        temp = list[i]
        for j in range(i, -1, -1):
            # j为当前位置,试探j-1位置
            if temp < list[j - 1]:
                list[j] = list[j - 1]
            else:
                # 位置确定为j
                break
        list[j] = temp

    return list


list = [1, 10, 3, 5, 2, 4, 6, 7, 9, 8]

print( insert_sort(list) )

猜你喜欢

转载自blog.csdn.net/a_jie_2016_05/article/details/84663255
今日推荐