美文网首页
稳定排序方法

稳定排序方法

作者: 司徒道 | 来源:发表于2017-07-03 11:44 被阅读0次

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

相关文章

  • 912. Sort an Array

    排序方法平均时间复杂度最坏最好空间复杂度稳定性直接插入排序稳定直接选择排序不稳定冒泡排序稳定希尔排序不稳定快速排序...

  • 稳定排序方法

    1.插入排序思想:将一个数字序列引申为两部分,第一部分为原始序列除去首数字,第二部分为变长序列,初始值为原始序列的...

  • 排序算法

    排序算法 基本方法,交换和比较: 选择排序 不稳定。{5,5,2}就不稳定。 插入排序 可稳定。等于不再交换,所以...

  • 时间复杂度

    排序方法 最好情况 最坏情况 平均情况 稳定性冒泡排序 O(...

  • ES6中数组新增扩展

    一、构造函数新增的方法 二、实例对象新增的方法 五、排序稳定性将sort()默认设置为稳定的排序算法

  • 排序算法总结

    一、分类与性能 1.1、稳定排序和非稳定排序 简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在...

  • Python实现七种常用排序(冒泡、快排、归并、选择、堆排序、插

    排序方法平均情况最好情况最坏情况辅助空间稳定性冒泡排序O(n^2)O(n)O(n^2)O(1)稳定选择排序O(n^...

  • 排序

    稳定排序 不稳定排序 交换排序 选择排序

  • 常用排序实现

    选择排序(不稳定) 冒泡排序(稳定) 快速排序(不稳定)

  • 希尔排序

    希尔排序又称“缩小增量排序”,是对直接插入排序方法的改造。 希尔排序是一种不稳定的排序方法。基本思想是将整个待排记...

网友评论

      本文标题:稳定排序方法

      本文链接:https://www.haomeiwen.com/subject/jopacxtx.html