一种插入选择排序

本来要练习一下插入排序, 时间久了, 没用过,连感念都忘掉了。  随便写了以下 code, 结果感觉这个排序挺有意思。

它不是经典的排序算法, 但是里面的逻辑是正确的。

 

有一个关键点:

1. 每一次 j 对比的  a[i] 是动态更新的, 如果可以更新。

 逻辑上相当于是: 每一次都选择了最小值放在 i 位置。

 

import random


def insert_sort(a):
    array_size = len(a)
    for i in range(array_size):
        for j in range(i+1, array_size):
            if a[j] > a[i]:
                continue
            else:
                t = a[j]
                a[i+1:j+1] = a[i:j]
                a[i] = t
                print(i, '->', a)
    return a
                

a = [random.randint(1,100) for i in range(10)]
# a = [10, 68, 10, 8,8,8,68, 95, 35, 16, 18, 66, 4, 84]
print(a)
insert_sort(a)
print(a)

输出:

[57, 93, 21, 92, 37, 59, 34, 81, 82, 66]
0 -> [21, 57, 93, 92, 37, 59, 34, 81, 82, 66]
1 -> [21, 37, 57, 93, 92, 59, 34, 81, 82, 66]
1 -> [21, 34, 37, 57, 93, 92, 59, 81, 82, 66]
4 -> [21, 34, 37, 57, 92, 93, 59, 81, 82, 66]
4 -> [21, 34, 37, 57, 59, 92, 93, 81, 82, 66]
5 -> [21, 34, 37, 57, 59, 81, 92, 93, 82, 66]
5 -> [21, 34, 37, 57, 59, 66, 81, 92, 93, 82]
7 -> [21, 34, 37, 57, 59, 66, 81, 82, 92, 93]
[21, 34, 37, 57, 59, 66, 81, 82, 92, 93]

 

posted @ 2022-10-22 22:32  svolcano  阅读(11)  评论(0编辑  收藏  举报