Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit acb77c1

Browse files
author
Amogh Singhal
authored
Create merge_sort.py
1 parent c18cc14 commit acb77c1

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

‎merge_sort.py‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
def merge_sort(array, left, right):
2+
# derive the mid-point
3+
if left < right:
4+
mid = (left+(right-1))//2
5+
# print("mid", mid)
6+
7+
# sort the first and second halves
8+
merge_sort(array, left, mid)
9+
merge_sort(array, mid+1, right)
10+
# merge back
11+
merge(array, left, mid, right)
12+
13+
def merge(array, left, mid, right):
14+
# initialize sizes for the sub-arrays
15+
size_left = mid - left + 1
16+
# print("size_left", size_left)
17+
size_right = right - mid
18+
# print("size_right", size_right)
19+
20+
# create the temp sub-arrays
21+
LEFT = [0] * (size_left)
22+
# print("LEFT", LEFT)
23+
RIGHT = [0] * (size_right)
24+
# print("RIGHT", RIGHT)
25+
26+
# copy data to the sub-arrays
27+
for i in range(0, size_left):
28+
LEFT[i] = array[left + i]
29+
30+
for j in range(0, size_right):
31+
RIGHT[j] = array[mid + 1 + j]
32+
33+
# merge into original array
34+
i, j, k = 0, 0, 1
35+
36+
while i < size_left and j < size_right:
37+
if LEFT[i] <= RIGHT[j]:
38+
array[k] = LEFT[i]
39+
i += 1
40+
else:
41+
array[k] = RIGHT[j]
42+
j += 1
43+
k += 1
44+
45+
arr = [6, 5, 3, 1, 8, 7, 2, 4]
46+
merge_sort(arr, 0, len(arr))

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /