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)

  • 相关阅读:
    SPOJ
    基础计算几何
    数颜色
    Codeforces 986B
    一些有趣的题
    jQuery
    linux命令学习
    javaScript
    css
    html
  • 原文地址:https://www.cnblogs.com/yongfuxue/p/10096678.html
Copyright © 2011-2022 走看看