稳定排序方法

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.归并排序
思想:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容