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

     

    希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。

    希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。

    希尔排序是基于插入排序的以下两点性质而提出改进方法的:

    插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率

    但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位

    时间复杂度:

    步骤

    每次以一定步长(就是跳过等距的输)进行排序

    def shellSort(list):

           n = len(list)

           #这里定义每次取半,但最有时间复杂度不一定是取半的

           gap = n // 2

        while step >= 1:

    #插入算法,与普通的插入算法的区别就是gap步长

                  for j in range(gap, n):

                         i = j

                         while i >=1:

                                if list[i] < list[i – gap]:

                                       list[i], list[i – gap] = list[i – gap], list[i]

                                       i -= gap

                                else:

                                       break

                  #缩短步长

                  gap //= 2

    if __name__ == '__main__':

        list = [9,3,5,8,2,7,1]

    shellSort(list)

    print (list)

  • 相关阅读:
    cefsharp设置默认语言
    C#创建委托实例
    C++/C#互调步骤
    mybatis别名
    redis
    数据库优化方面的事情:
    Properties类使用详解
    七层协议以及如何很好得记忆
    Http 请求到后端过程
    【转】那些年用过的Redis集群架构(含面试解析)
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10096678.html
Copyright © 2011-2022 走看看