希尔排序

#__author__=lx
#__date__=2011-09-27
#__brief_=shell_sort


def shell_sort( l ):
        gap = 0
        n = len( l )

        while ( gap <= n ):
                gap = gap * 3 + 1

        while ( gap > 0 ):
                i = gap
                while ( i < n ):
                        j = i - gap
                        temp = l[i]
                        while ( ( j >= 0 ) and ( l[ j ] > temp )):
                                l[ j + gap ] = l[ j ]
                                j = j - gap
                        l[ j + gap ] = temp
                        i += 1
                gap = ( gap - 1 ) / 3

if __name__ == "__main__":
        l = []
        l.append( 3 )
        l.append( 2 )
        l.append( 1 )
        l.append( 8 )
        l.append( 0 )
        l.append( 20 )

        shell_sort( l )

        for i in l:
                print i

  

原文地址:https://www.cnblogs.com/lxgeek/p/2192768.html