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)

  • 相关阅读:
    git代码提交
    bootstrap的用法、bootstrap图标
    HTML 5 Web 存储(客户端存储数据)
    require.js
    WebStrom的使用技巧
    event事件
    $().each 和 $each( )的区别
    js基础字符串
    if return的用法 逻辑运算 switch for break等用法
    date-id自定义属性
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10096678.html
Copyright © 2011-2022 走看看