zoukankan      html  css  js  c++  java
  • python数据结构之希尔排序

    python数据结构之希尔排序

    #-*-coding:utf-8-*-
    
    '''
    将序列划分为两部分,将这两部分依次比较,若前大后小,则交换。
    将步长除以2(向下取整),直到步长=0,依次比较。
    '''
    def ShellSort(L):
        step = len(L)//2 # 设定步长,Python2则用/
        while step > 0:
            print('step = ' + repr(step))
            for i in range(step, len(L)):
                while i >= step and L[i-step] > L[i]:
                    print('i=' + repr(i) + ' i-step=' + repr(i-step))
                    print(repr(L[i]) + '<-->' + repr(L[i-step]))
                    L[i], L[i-step] = L[i-step], L[i]
                    print(L)
                    i -= step
            step = step//2
        return L
    
    L = [5,4,2,3,6,1,0]
    print("原始序列:")
    print(L)
    print("希尔排序:")
    print(ShellSort(L))
    

    程序输出结果:

    原始序列:
    [5, 4, 2, 3, 6, 1, 0]
    希尔排序:
    step = 3
    i=3 i-step=0
    3<-->5
    [3, 4, 2, 5, 6, 1, 0]
    i=5 i-step=2
    1<-->2
    [3, 4, 1, 5, 6, 2, 0]
    i=6 i-step=3
    0<-->5
    [3, 4, 1, 0, 6, 2, 5]
    i=3 i-step=0
    0<-->3
    [0, 4, 1, 3, 6, 2, 5]
    step = 1
    i=2 i-step=1
    1<-->4
    [0, 1, 4, 3, 6, 2, 5]
    i=3 i-step=2
    3<-->4
    [0, 1, 3, 4, 6, 2, 5]
    i=5 i-step=4
    2<-->6
    [0, 1, 3, 4, 2, 6, 5]
    i=4 i-step=3
    2<-->4
    [0, 1, 3, 2, 4, 6, 5]
    i=3 i-step=2
    2<-->3
    [0, 1, 2, 3, 4, 6, 5]
    i=6 i-step=5
    5<-->6
    [0, 1, 2, 3, 4, 5, 6]
    [0, 1, 2, 3, 4, 5, 6]
    
  • 相关阅读:
    SSD
    NMS---非极大值抑制
    检测评价函数 IOU
    Ground Truth
    耿建超英语语法---状语从句
    联合索引创建时候的排序规则
    order by limit的原理
    mysql事务四种隔离级别
    为什么 Redis 快照使用子进程
    MYSQL查询~ 存在一个表而不在另一个表中的数据
  • 原文地址:https://www.cnblogs.com/liutongqing/p/7571606.html
Copyright © 2011-2022 走看看