8000 Merge pull request #31 from vishal-wadhwa/heap-sort/issue-#2 · codezoned/ScriptsDump@33a7e6e · GitHub
[go: up one dir, main page]

Skip to content

Commit 33a7e6e

Browse files
authored
Merge pull request #31 from vishal-wadhwa/heap-sort/issue-#2
added heap-sort as a part of array sorting
2 parents e7bd769 + 2405ad2 commit 33a7e6e

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.vscode
2+
*.pyc
3+
env
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
def heapify(arr, n, i):
2+
largest = i
3+
l = 2 *i + 1
4+
r = 2 *i + 2
5+
6+
if l < n and arr[l] > arr[largest]:
7+
largest = l
8+
9+
if r < n and arr[r] > arr[largest]:
10+
largest = r
11+
12+
if largest != i:
13+
arr[largest], arr[i] = arr[i], arr[largest]
14+
heapify(arr, n, largest)
15+
16+
17+
def build_heap(arr):
18+
arr_len = len(arr)
19+
for i in range(arr_len//2 - 1, -1, -1):
20+
heapify(arr, arr_len, i)
21+
22+
23+
def heap_sort(arr):
24+
build_heap(arr)
25+
for i in range(len(arr) - 1, -1, -1):
26+
arr[0], arr[i] = arr[i], arr[0]
27+
heapify(arr, i, 0)
28+
29+
30+
def main():
31+
arr = [9.7, 1.3, -2, 1, 0]
32+
print("Before: ", arr)
33+
heap_sort(arr)
34+
assert arr == [-2, 0, 1, 1.3, 9.7]
35+
print("After: ", arr)
36+
37+
38+
if __name__ == '__main__':
39+
main()

0 commit comments

Comments
 (0)
0