写给媳妇儿的算法(五)——插入排序

2018-11-11  本文已影响48人  奔跑的徐胖子

继续新生开学老师按照学生身高排列队伍的话题,除了冒泡排序之外,老师还有另外一种选择……

插入排序是通过 分堆 的方式逐渐的把未排序的元素插入到已排序的元素中去的算法。

算法过程

使用插入排序首先要确定一个初始的有序的队列。对于站队来说,最开始能确定的有序的队列就是只包含一个同学的队列,这个肯定是有序。然后依次的把没有归到队伍中的同学依次的叫过来排进队列,每排一个,就要保证排进去之后,队伍是有序的,直到所有的同学都被排到了队伍中,所有的同学就站队完毕。

还是那一批同学:150 165 160 173 155。

插入排序过程.png

算法实现

#coding:utf-8

import numpy as np 

def insertion_sort(data):
    if len(data) < 2:
        return data

    data_len = len(data)

    for i in range(1, data_len, 1):
        value = data[i]
        # 比较并且向后移动的过程
        j = i-1
        while j >= 0:
            if data[j] > value:
                data[j+1] = data[j]
                j -= 1
            else:
                break
        data[j+1] = value
    
array = np.arange(20)
np.random.shuffle(array)
array = list(array)
print('输入的数据: {}'.format(array))
insertion_sort(array)
print('排序之后的数据:{}'.format(array))

结果:

插入排序结果.png


上一篇:写给媳妇儿的算法(四)——冒泡排序
上一篇:写给媳妇儿的算法(六)——快速排序
上一篇 下一篇

猜你喜欢

热点阅读