Skip to content

Commit df9e6c4

Browse files
authored
Merge pull request #2 from M46F/python-sorting
add multiple sorting algo in python
2 parents 421cab5 + af6311d commit df9e6c4

File tree

4 files changed

+92
-0
lines changed

4 files changed

+92
-0
lines changed

Algorithms/sorting/bubble_sort.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
def bubble_sort(arr):
2+
size = len(arr)
3+
for i in range(size):
4+
for j in range(size-1):
5+
if arr[j] > arr[j+1]:
6+
arr[j], arr[j+1] = arr[j+1], arr[j]
7+
8+
9+
arr = [5,4,3,1,2,3,1,1,3]
10+
print('before', arr)
11+
bubble_sort(arr)
12+
print('after', arr)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
def insertion_sort(arr):
2+
size = len(arr)
3+
for i in range(1,size):
4+
value = arr[i]
5+
hole = i
6+
while hole > 0 and arr[hole-1] > value:
7+
arr[hole] = arr[hole-1]
8+
hole -= 1
9+
arr[hole] = value
10+
11+
12+
arr = [5,4,3,1,2,3,1,1,3]
13+
print('before', arr)
14+
insertion_sort(arr)
15+
print('after', arr)
16+

Algorithms/sorting/merge_sort.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
def merge_sort(arr):
2+
if len(arr) > 1:
3+
mid = len(arr)//2
4+
left_arr = arr[:mid]
5+
right_arr = arr[mid:]
6+
7+
merge_sort(left_arr)
8+
merge_sort(right_arr)
9+
10+
left_idx = right_idx = curr_idx = 0
11+
12+
while left_idx < len(left_arr) and right_idx < len(right_arr):
13+
if left_arr[left_idx] < right_arr[right_idx]:
14+
arr[curr_idx] = left_arr[left_idx]
15+
left_idx += 1
16+
else:
17+
arr[curr_idx] = right_arr[right_idx]
18+
right_idx += 1
19+
curr_idx += 1
20+
21+
22+
while left_idx < len(left_arr):
23+
arr[curr_idx] = left_arr[left_idx]
24+
left_idx += 1
25+
curr_idx += 1
26+
27+
while right_idx < len(right_arr):
28+
arr[curr_idx] = right_arr[right_idx]
29+
right_idx += 1
30+
curr_idx += 1
31+
32+
33+
arr = [5,4,3,1,2,3,1,1,3]
34+
print('before', arr)
35+
merge_sort(arr)
36+
print('after', arr)
37+

Algorithms/sorting/quick_sort.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
def partition(arr, low, high):
2+
i = low - 1
3+
pivot = arr[high]
4+
for j in range(low, high):
5+
if arr[j] <= pivot:
6+
i += 1
7+
arr[i],arr[j] = arr[j],arr[i]
8+
arr[i+1], arr[high] = arr[high], arr[i+1]
9+
return i + 1
10+
11+
12+
def quick_sort_func(arr, low, high):
13+
if low < high:
14+
partition_idx = partition(arr, low, high)
15+
16+
quick_sort_func(arr, low, partition_idx-1)
17+
quick_sort_func(arr, partition_idx+1, high)
18+
19+
def quick_sort(arr):
20+
quick_sort_func(arr, 0, len(arr)-1)
21+
22+
23+
arr = [5,4,3,1,2,3,1,1,3]
24+
print('before', arr)
25+
quick_sort(arr)
26+
print('after', arr)
27+

0 commit comments

Comments
 (0)