Skip to content

Commit d8e15a3

Browse files
committed
Added Heap Sort, Quick Sort and Radix Sort
1 parent 2ec537c commit d8e15a3

File tree

3 files changed

+116
-0
lines changed

3 files changed

+116
-0
lines changed

python/sorting/Heap Sort.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Code for heap sort in Python
2+
3+
4+
def heapify(arr, n , i):
5+
root = i #root
6+
7+
l = 2*i+1 #left child
8+
r = 2*i+2 #right child
9+
10+
if(l<n and arr[i] < arr[l]):
11+
root = l
12+
13+
if(r<n and arr[root] < arr[r]):
14+
root = r
15+
16+
if(root!=i):
17+
arr[i], arr[root] = arr[root], arr[i]
18+
19+
heapify(arr, n, root)
20+
21+
22+
23+
24+
def sort(arr, n):
25+
26+
#Building maxheap
27+
for i in range(n//2 - 1, -1, -1):
28+
heapify(arr, n, i)
29+
for i in range(n-1,0,-1):
30+
arr[i], arr[0] = arr[0], arr[i]
31+
heapify(arr, i , 0)
32+
33+
34+
35+
36+
a = [2,4,15,2,3,7,90]
37+
n = len(a)
38+
sort(a,n)
39+
print("Sorted Array: \n")
40+
for i in range(n):
41+
print(f"{a[i]}", end = " ")
42+

python/sorting/Quick Sort.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Quick sort implementation in python
2+
3+
4+
def partition(arr, low, high):
5+
i = low -1
6+
pivot = arr[high]
7+
8+
for j in range(low, high):
9+
if(arr[j] < pivot):
10+
i = i+1
11+
arr[i], arr[j] = arr[j], arr[i]
12+
13+
arr[i+1],arr[high] = arr[high], arr[i+1]
14+
return (i+1)
15+
16+
17+
def quicksort(arr, low, high):
18+
19+
if(low< high):
20+
pi = partition(arr, low, high)
21+
quicksort(arr, low, pi-1)
22+
quicksort(arr, pi, high)
23+
24+
25+
26+
27+
arr = [10,2,4,7,56,12,18]
28+
n = len(arr)
29+
quicksort(arr,0, n-1)
30+
print("Sorted array: \n")
31+
for i in range(n):
32+
print(f"{arr[i]}", end = ' ')

python/sorting/Radix Sort.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
def sort(arr, exp1):
2+
n = len(arr)
3+
4+
5+
output = [0] * (n)
6+
count = [0] * (10)
7+
8+
9+
for i in range(0, n):
10+
index = (arr[i]/exp1)
11+
count[int((index)%10)] += 1
12+
13+
14+
for i in range(1,10):
15+
count[i] += count[i-1]
16+
i = n-1
17+
while i>=0:
18+
index = (arr[i]/exp1)
19+
output[ count[ int((index)%10) ] - 1] = arr[i]
20+
count[int((index)%10)] -= 1
21+
i -= 1
22+
i = 0
23+
for i in range(0,len(arr)):
24+
arr[i] = output[i]
25+
26+
27+
28+
29+
def radixsort(arr):
30+
largest = max(arr)
31+
exp = 1 # place of digit
32+
while (largest/exp)>0:
33+
sort(arr, exp)
34+
exp *= 10
35+
36+
37+
arr = [170, 45, 11, 815, 645, 24, 2, 70]
38+
n = len(arr)
39+
radixsort(arr)
40+
41+
for i in range(n):
42+
print(f"{arr[i]}", end = " ")

0 commit comments

Comments
 (0)