1.插入排序
思想:将一个数字序列引申为两部分,第一部分为原始序列除去首数字,第二部分为变长序列,初始值为原始序列的首数字,并不断将原始序列的值逐一添入。将第一部分的每一个数字分别与第二部分比较,若结果偏小,则交换数字位置。
import random
random.seed(12)
num = []
for i in range(10):
    num.append(random.randint(1, 100))
print('原始序列:', num)
for j in range(1, len(num)):
    key = num[j]
    n = j - 1
    print('第一部分:', key, ' 第二部分:', num[:n+1])
    while n >= 0:
        if key < num[n]:
            num[n+1], num[n] = num[n], key
        n -= 1
print('最终序列:', num)
结果:
原始序列: [61, 35, 85, 68, 86, 45, 19, 49, 2, 48]
第一部分: 35  第二部分: [61]
第一部分: 85  第二部分: [35, 61]
第一部分: 68  第二部分: [35, 61, 85]
第一部分: 86  第二部分: [35, 61, 68, 85]
第一部分: 45  第二部分: [35, 61, 68, 85, 86]
第一部分: 19  第二部分: [35, 45, 61, 68, 85, 86]
第一部分: 49  第二部分: [19, 35, 45, 61, 68, 85, 86]
第一部分: 2    第二部分: [19, 35, 45, 49, 61, 68, 85, 86]
第一部分: 48  第二部分: [2, 19, 35, 45, 49, 61, 68, 85, 86]
最终序列: [2, 19, 35, 45, 48, 49, 61, 68, 85, 86]
2.冒泡排序
思想:比较相邻元素,如果顺序错误则交换元素位置。
def bubble_sort(num):
    for m in range(len(num)):
        for n in range(m+1, len(num)):
            if num[n] < num[m]:
                num[m], num[n] = num[n], num[m]
    return num
3.归并排序
思想: