• 希尔排序


    希尔排序是对插入排序的扩展,把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法终止

    1)

    2)

    3)

    # -*- coding: utf-8 -*-
    def shell_sort(alist):
        """希尔排序"""
        #n=9
        n=len(alist)
        #gap=4
        gap= n//2
        # gap变化到0之前,插入算法执行的次数
        while gap>=1:
                #插入算法,与普通的插入算法的区别就是gap步长
            for j in range(gap,n):
                # j =[gap,gap+1,gap+2,....,n-1]
                i=j
                while i>0:
                    if alist[i]<alist[i-gap]:
                        alist[i],alist[i-gap]=alist[i-gap],alist[i]
                        i-=gap
                    else:
                        break
            # 缩短gap步长
            gap//=2
    if __name__ == '__main__':
        li = [54,26,93,17,77,31,44,55,20]
        print(li)
        shell_sort(li)
        print(li)
  • 相关阅读:
    高精度 模板
    《图论》邻接表
    模板整理
    H
    C
    同余定理的应用(处理大数
    H
    1153: 简易版最长序列
    1152: 二分搜索
    1151: 大整数加法(正数)
  • 原文地址:https://www.cnblogs.com/bashliuhe/p/14948298.html
Copyright © 2020-2023  润新知