zoukankan      html  css  js  c++  java
  • 排序算法之希尔排序的python实现

    希尔排序(Shell’s Sort)是插入排序的一种,是直接插入排序算法的一种更高版本的改进版本。

    希尔排序的工作原理

    如下:

    (1)把记录按步长gap分组,对每组记录采用直接插入排序方法进行排序;

    (2)随着步长逐渐减小,所分成的组包含的记录越来越多;

    (3)当步长值减小到1时,整个数据合成一组,构成一组有序记录,完成排序;

    代码实现如下:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    __author__ = "hsz"
    
    
    def shell_sort(alist):
        step = len(alist) // 2
        while step > 0:
            for i in range(step, len(alist)):
                # 在索引为step到len(L)上,比较L[i]和L[i-step]的大小
                while i >= step and alist[i] < alist[i - step]:
                    # 这里可以调整step从小到大或者从大到小排列
                    alist[i], alist[i - step] = alist[i - step], alist[i]
                    i -= step
            step //= 2
    
    
    if __name__ == "__main__":
        li = [1, 3, 2, 32, 5, 4]
        print(li)
        shell_sort(li)
        print(li)
  • 相关阅读:
    模板
    kuangbin带你飞
    BZOJ开荒记
    模板
    洛谷
    模板
    [蓝桥杯][2013年第四届真题]危险系数
    数位DP入门题
    备战2019蓝桥杯
    常用的数学符号
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/11743799.html
Copyright © 2011-2022 走看看