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

    一.思想

    希尔排序是一种分组插入排序算法。

    • 首先取一个整数d1=n/2,将元素分为d1个为一组,每组相邻量元素之间距离为d1,两组数据一一进行对比按大小,从新分配两组

    如[1,3,0,2] 第一次排序后变成[0,2,1,3]

    • 取第二个整数d2=d1/2,重复上述分组排序过程,直到di=1,即所有元素在同一组内进行直接插入排序。

    按上面那个简单例子走第二次排序为

    [0,2,1,3]按间隔1进行对比第一次然后依次变成

    0与2比,0比2小顺序不变

    [0,2,1,3]

    2与1比,1比2小1去前面

    [0,1,2,3]

    依次类推...全部走完就是排好了

    [0,1,2,3]

    二.代码

    这是网上找的精简后的代码,我自己撸的和屎一样很乱

    def shell_sort(li):
        gap = len(li)//2
        while gap>0:
            for i in range(gap,len(li)):
                tmp =li[i]
                j = i - gap
                while j >=0 and tmp <li[j]:
                    li[j+gap]=li[j]
                    j -=gap
                li[j+gap]=tmp
            gap /= 2
    
  • 相关阅读:
    python 爬虫 urllib模块 url编码处理
    python 爬虫 urllib模块 目录
    python 爬虫 urllib模块介绍
    python 爬虫 目录
    爬虫 介绍
    POJ 2533
    POJ 2531
    POJ 2524
    POJ 2505
    POJ 2521
  • 原文地址:https://www.cnblogs.com/pythonywy/p/11869000.html
Copyright © 2011-2022 走看看