Skip to content

Commit 4d6a23f

Browse files
committed
Heapsort
1 parent 558c9c8 commit 4d6a23f

File tree

1 file changed

+31
-23
lines changed

1 file changed

+31
-23
lines changed

Sorting/HeapSort.ipynb

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,39 +9,47 @@
99
"name": "stdout",
1010
"output_type": "stream",
1111
"text": [
12-
"Sorted array is:\n",
13-
"1\n",
12+
"Sorted array is\n",
1413
"5\n",
14+
"6\n",
1515
"7\n",
16-
"8\n",
17-
"9\n",
18-
"10\n"
16+
"11\n",
17+
"12\n",
18+
"13\n"
1919
]
2020
}
2121
],
2222
"source": [
23-
"def partition(arr,low,high): \n",
24-
" i = ( low-1 ) \n",
25-
" pivot = arr[high]\n",
23+
"def heapify(arr, n, i): \n",
24+
" largest = i \n",
25+
" l = 2 * i + 1 \n",
26+
" r = 2 * i + 2 \n",
27+
"\n",
28+
" if l < n and arr[i] < arr[l]: \n",
29+
" largest = l \n",
2630
" \n",
27-
" for j in range(low , high): \n",
28-
" if arr[j] <= pivot: \n",
29-
" i = i+1 \n",
30-
" arr[i],arr[j] = arr[j],arr[i] \n",
31-
" arr[i+1],arr[high] = arr[high],arr[i+1] \n",
32-
" return ( i+1 ) \n",
31+
" if r < n and arr[largest] < arr[r]: \n",
32+
" largest = r \n",
3333
" \n",
34-
"def quickSort(arr,low,high): \n",
35-
" if low < high:\n",
36-
" pi = partition(arr,low,high) \n",
37-
" quickSort(arr, low, pi-1) \n",
38-
" quickSort(arr, pi+1, high) \n",
34+
" if largest != i: \n",
35+
" arr[i],arr[largest] = arr[largest],arr[i] # swap \n",
3936
" \n",
40-
"\n",
41-
"arr = [10, 7, 8, 9, 1, 5] \n",
37+
" heapify(arr, n, largest) \n",
38+
" \n",
39+
" \n",
40+
"def heapSort(arr): \n",
41+
" n = len(arr) \n",
42+
" for i in range(n, -1, -1): \n",
43+
" heapify(arr, n, i) \n",
44+
" \n",
45+
" for i in range(n-1, 0, -1): \n",
46+
" arr[i], arr[0] = arr[0], arr[i] # swap \n",
47+
" heapify(arr, i, 0) \n",
48+
" \n",
49+
"arr = [ 12, 11, 13, 5, 6, 7] \n",
50+
"heapSort(arr) \n",
4251
"n = len(arr) \n",
43-
"quickSort(arr,0,n-1) \n",
44-
"print (\"Sorted array is:\") \n",
52+
"print (\"Sorted array is\") \n",
4553
"for i in range(n): \n",
4654
" print (\"%d\" %arr[i]), "
4755
]

0 commit comments

Comments
 (0)