zoukankan      html  css  js  c++  java
  • 2019.9.23-希尔排序实现代码

    # coding:utf-8

    def shell_sort(alist):
    """希尓排序"""
    # n = 9
    n = len(alist)
    # gap = 4
    gap = n // 2

    # i = gap
    # for i in range(gap, n):
    # i = [gap, gap+1, gap+2, gap+3... n-1]
    # while:
    # if alist[i] < alist[i-gap]:
    # alist[i], alist[i-gap] = alist[i-gap], alist[i]

    # gap變化到0之前,插入算法執行的次數
    while gap > 0:
    # 插入算法, 與普通的插入算法的區別就是gap步長
    for j in range(gap, n):
    # j = [gap, gap+1, gap+2, gap+3, ..., n-1]
    i = j
    while i > 0:
    if alist[i] < alist[i-1]:
    alist[i], alist[i-gap] = alist[i-gap], alist[i]
    i -= gap
    else:
    break

    # 縮短ga步長
    gap //= 2

    if __name__ == "__main__":
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(li)
    shell_sort(li)
    print(li)

     

    执行结果

  • 相关阅读:
    poj 2689 大范围内素数筛选
    poj 3270 置换
    Linux命令(实时更新)
    性能测试
    sql注入
    MySQL回表查询
    MySQL数据库高可用方案
    java反射机制
    分布式数据库
    数据库的灾备
  • 原文地址:https://www.cnblogs.com/lishuide/p/11575412.html
Copyright © 2011-2022 走看看