3 y8 U! d: I' j% s n = len(arr) 8 D3 T2 S( K& |9 f7 Y8 Q0 n0 x gap = int(n/2) % n! v# q" T$ F * a; W y4 M1 D: _3 ?8 p2 f0 h while gap > 0: 6 R% J- I) x# |6 i6 C Z
& f4 y% z# W+ E! Y* P- L for i in range(gap,n): - Q) I2 ]. c8 y: b; p
1 e- }3 m- k% M) Z temp = arr * G' i( k1 h5 X" h! }
j = i 9 h0 o& o; T( Z6 i" A1 \0 o3 H* X" U while j >= gap and arr[j-gap] >temp: 0 ~' T2 H) _- g arr[j] = arr[j-gap] 1 v C {- `! @5 S7 m
j -= gap ) G. \, X `- c arr[j] = temp . A0 g& q) S( W& K1 G" B% M5 s
gap = int(gap/2) $ J( U T& k4 B# B6 f' O 0 H, S2 P5 V/ S n2 p) r- T/ qarr = [ 12, 34, 54, 2, 3] , B+ t8 w) j! @+ w2 p
2 l; ]0 H. j ^3 R0 bn = len(arr) , \3 C) M/ I; ^9 `4 W
print ("排序前:") 1 x5 p. o. F; J$ I) @for i in range(n): + [' J1 \6 i2 [3 v: M print(arr), ( w2 ?1 s2 a: P$ E2 x' F. {& X3 H
) l$ I% n( {/ b7 s* A
shellSort(arr) , m* ^1 d2 j, u2 X2 e% S
/ H( G9 v1 F) N1 iprint ("\n排序后:") + s4 y: }: `1 ]: n7 _% _
for i in range(n): 7 c( [/ O, p5 {0 C print(arr), " B0 L) S0 U- v4 f& {! F' V" q
执行以上代码输出结果为:: y8 D% V1 ]. b- R1 F1 i
排序前:12 9 z& @: g5 F+ {9 n$ n% p- A5 k34 + W$ l0 k" X9 o. n( t+ L& w0 |542 h4 v/ K9 f _6 N1 a! F3 }' x
2, z) [7 D) G: u. }: j
34 x" Q/ J. t ~1 M9 X
3 S C) C8 p' x* Z8 J排序后: 8 N% O! k# a% ^: D) Z# j: h26 {3 e; j- v* ?/ t- `& U2 Q
3" g( a& E) e( e: q
12 0 G5 P$ K$ y5 O* r/ C5 V34! G0 d2 ^) [& X4 X: \. v# G
549 u8 p. R% V. K' o
# A, l5 o1 V$ }" M" C/ D V V$ |# I' {2 M8 H/ S$ K( w9 H+ p1 Z/ e9 o4 s% ?3 W, K+ n
/ q/ u# Y3 ?1 o