File tree 2 files changed +64
-0
lines changed
2 files changed +64
-0
lines changed Original file line number Diff line number Diff line change
1
+ def merge_sort (arr ):
2
+ if len (arr ) <= 1 :
3
+ return arr
4
+
5
+ i = 0
6
+ j = 0
7
+ k = 0
8
+
9
+ mid = len (arr ) // 2
10
+ left = arr [:mid ]
11
+ right = arr [mid :]
12
+
13
+ merge_sort (left )
14
+ merge_sort (right )
15
+
16
+ while i < len (left ) and j < len (right ):
17
+ if left [i ] <= right [j ]:
18
+ arr [k ] = left [i ]
19
+ i += 1
20
+ else :
21
+ arr [k ] = right [j ]
22
+ j += 1
23
+ k += 1
24
+
25
+ while i < len (left ):
26
+ arr [k ] = left [i ]
27
+ i += 1
28
+ k += 1
29
+
30
+ while j < len (right ):
31
+ arr [k ] = right [j ]
32
+ j += 1
33
+ k += 1
34
+
35
+ return arr
Original file line number Diff line number Diff line change
1
+ import unittest
2
+ from random import randrange
3
+ from merge_sort import merge_sort as alg_sort
4
+
5
+
6
+ class MergeSortTyes (unittest .TestCase ):
7
+ def test_arr_positives (self ):
8
+ arr = [randrange (0 , 20 ) for i in range (0 , 20 )]
9
+ expected = sorted (arr )
10
+ actual = alg_sort (arr )
11
+ assert actual == expected
12
+
13
+ def test_empty_arr (self ):
14
+ arr = []
15
+ expected = sorted (arr )
16
+ actual = alg_sort (arr )
17
+ assert actual == expected
18
+
19
+ def test_single_item_arr (self ):
20
+ arr = [4 ]
21
+ expected = sorted (arr )
22
+ actual = alg_sort (arr )
23
+ assert actual == expected
24
+
25
+ def test_arr_positives_negatives (self ):
26
+ arr = [randrange (- 20 , 20 ) for i in range (0 , 20 )]
27
+ expected = sorted (arr )
28
+ actual = alg_sort (arr )
29
+ assert actual == expected
You can’t perform that action at this time.
0 commit comments