1+ import logging
2+
13def insertion_sort (arr , left = 0 , right = None ):
24 if right is None :
35 right = len (arr ) - 1
@@ -19,19 +21,24 @@ def merge(left, right):
1921 return [right [0 ]] + merge (left , right [1 :])
2022
2123def tim_sort (arr ):
22- n = len (arr )
23- min_run = 32
24- for i in range (0 , n , min_run ):
25- insertion_sort (arr , i , min ((i + min_run - 1 ), n - 1 ))
26- size = min_run
27- while size < n :
28- for start in range (0 , n , size * 2 ):
29- midpoint = start + size - 1
30- end = min ((start + size * 2 - 1 ), (n - 1 ))
31- merged_array = merge (
32- left = arr [start :midpoint + 1 ],
33- right = arr [midpoint + 1 :end + 1 ]
34- )
35- arr [start :start + len (merged_array )] = merged_array
36- size *= 2
37- return arr
24+ try :
25+ n = len (arr )
26+ min_run = 32
27+ for i in range (0 , n , min_run ):
28+ insertion_sort (arr , i , min ((i + min_run - 1 ), n - 1 ))
29+ size = min_run
30+ while size < n :
31+ for start in range (0 , n , size * 2 ):
32+ midpoint = start + size - 1
33+ end = min ((start + size * 2 - 1 ), (n - 1 ))
34+ merged_array = merge (
35+ left = arr [start :midpoint + 1 ],
36+ right = arr [midpoint + 1 :end + 1 ]
37+ )
38+ arr [start :start + len (merged_array )] = merged_array
39+ size *= 2
40+ return arr
41+ except Exception as e :
42+ logging .exception ("An error occurred during bucket sort: %s" , e )
43+ return []
44+
0 commit comments