1 #先看看合并排序 2 DEF マージ(A、B): 3 レナ、LENB = LEN(A)、lenの(B) 4 I、J = 0,0 5 C = [] 6 ながら(I <レナと J < LENB): 7 もし A [i]が< B [J]: 8 C.append(A [i])と 9 I + = 1 10 他: 11 C.append(B [J]) 12 J + = 1 13 もし I < レナ: 14 C = C + A [I:] 15 もしJ < LENB: 16 C = C + B [J:] 。17 リターンC 18である 。19 20である DEFのmerge_sort(L): 21である IF。LEN(L)== 1 : 22であり、 リターンL 23は、 他: 24 A = merge_sort(L [0: LEN(L)// 2 ]) 25 B = merge_sort(L [lenは(L)// 2 :]) 26であり、 リターンマージ(A、B) 27 28 位以下は、逆シーク 29 30 DEFのmerge_countを(A、B) : 31である #マージいくつかの同時逆 32 レナは、LENB =LEN(A)、lenの(B) 33 I、J、RC = 0,0,0 34 C = [] 35 ながら(I <レナ及び J < LENB): 36 であれば A [i]が> B [J]: 37 C.append(B [J]) 38 J + = 1 39 はrC + = lenA- I 40 他: 41 C.append(A [i])と 42 I + = 1 43 であれば I < レナ: 44 C = C + A [I :] 45 なら J < LENB: 46 C = C +B [J:] 47 リターン(RC、C) 48 49 50 DEF sort_count(L): 51 場合でlen(L)== 1 : 52 リターン(0、L) 53 他: 54 (RA、A)= sort_count( L [0:lenは(L)// 2 ]) 55 (RB、B)= sort_count(L [lenは(L)// 2 :]) 56 (RC、C)= merge_count(A、B) 57 リターン( RA + rBの+ はrC、C) 58 59 L = [4,7,1,2,9,3 、0] 60 プリント(sort_count(L)) 61 #出力:(13、[0、1、2、3、4、7、9])