一种插入选择排序
本来要练习一下插入排序, 时间久了, 没用过,连感念都忘掉了。 随便写了以下 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]