zoukankan      html  css  js  c++  java
  • Python 希尔排序

    def shell_sort(alist):
        n = len(alist)
        # 初始步长
        gap = n // 2
        while gap > 0:
            # 按步长进行插入排序
            for i in range(gap, n):
                j = i
                # 插入排序
                while j>=gap and alist[j-gap] > alist[j]:
                    alist[j-gap], alist[j] = alist[j], alist[j-gap]
                    j -= gap
            # 得到新的步长
            gap = gap // 2
    
    alist = [54,26,93,17,77,31,44,55,20]
    shell_sort(alist)
    print(alist)
    • 最优时间复杂度:根据步长序列的不同而不同
    • 最坏时间复杂度:O(n2)
    • 稳定想:不稳定

    希尔排序的基本思想是:将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列(步长更长了,列数更少了)来进行。最后整个表就只有一列了。将数组转换至表是为了更好地理解这算法,算法本身还是使用数组进行排序。

  • 相关阅读:
    前端工程化
    前端模块化CommonJS&ES6
    为什么浮点型运算结果会有误差?
    RequestAnimationFrame知多少?
    CSS三栏布局
    秋招面试
    实现Storage
    Angular
    TypeScript
    微服务架构设计模式
  • 原文地址:https://www.cnblogs.com/Erick-L/p/7225972.html
Copyright © 2011-2022 走看看