File tree Expand file tree Collapse file tree 1 file changed +20
-2
lines changed Expand file tree Collapse file tree 1 file changed +20
-2
lines changed Original file line number Diff line number Diff line change @@ -53,11 +53,29 @@ def merge_sort(a):
53
53
m1 = merge_sort (a [:len (a )// 2 ])
54
54
m2 = merge_sort (a [len (a )// 2 :])
55
55
return merge (m1 ,m2 )
56
+
57
+ def heap_sort (a ):
58
+ def heapify ():
59
+ for i in range (l // 2 - 1 ,- 1 ,- 1 ):
60
+ m = a [i ]
61
+ if i * 2 + 2 <= l - 1 :
62
+ m = max (m , a [i * 2 + 1 ], a [i * 2 + 2 ])
63
+ else :
64
+ m = max (m ,a [i * 2 + 1 ])
65
+ if m == a [i * 2 + 1 ]:
66
+ a [i ],a [i * 2 + 1 ] = a [i * 2 + 1 ],a [i ]
67
+ elif i * 2 + 2 <= l - 1 and m == a [i * 2 + 2 ]:
68
+ a [i ], a [i * 2 + 2 ] = a [i * 2 + 2 ],a [i ]
69
+ l = len (a )
70
+ for i in range (len (a )- 1 ):
71
+ heapify ()
72
+ a [0 ],a [l - 1 ] = a [l - 1 ],a [0 ]
73
+ l -= 1
56
74
57
75
def solution (input ):
58
- d = [i for i in range (100 )]
76
+ d = [i for i in range (10000 )]
59
77
shuffle (d )
60
78
d1 = d .copy ()
61
79
d .sort ()
62
- d1 = merge_sort (d1 )
80
+ heap_sort (d1 )
63
81
return str (d1 == d )
You can’t perform that action at this time.
0 commit comments