My omnium-gatherom of scripts and source code.
1{
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 17,
6 "id": "b7708ffa-07e8-4dbc-8aec-20216df4aa5b",
7 "metadata": {},
8 "outputs": [
9 {
10 "data": {
11 "text/plain": [
12 "mh (generic function with 2 methods)"
13 ]
14 },
15 "execution_count": 17,
16 "metadata": {},
17 "output_type": "execute_result"
18 }
19 ],
20 "source": [
21 "function mh(a::Vector{T}, parent_idx) where T\n",
22 " left_idx = 2 * parent_idx\n",
23 " right_idx = 2 * parent_idx + 1\n",
24 " parent = a[parent_idx]\n",
25 " left = nothing\n",
26 " if left_idx < length(a)\n",
27 " left = a[left_idx]\n",
28 " end\n",
29 " right = nothing\n",
30 " if right_idx < length(a)\n",
31 " right = a[right_idx]\n",
32 " end\n",
33 " largest_idx = parent_idx\n",
34 " if left != nothing && left > parent\n",
35 " largest_idx = left_idx\n",
36 " end\n",
37 " if right != nothing && right > a[largest_idx]\n",
38 " largest_idx = right_idx\n",
39 " end\n",
40 " if parent_idx != largest_idx\n",
41 " swap!(a[parent_idx], a[largest_idx])\n",
42 " mh(a, largest_idx)\n",
43 " println(a)\n",
44 " end\n",
45 "end"
46 ]
47 },
48 {
49 "cell_type": "code",
50 "execution_count": 18,
51 "id": "b0e5fef0-f989-4d65-aab3-bd8358158b9f",
52 "metadata": {},
53 "outputs": [
54 {
55 "data": {
56 "text/plain": [
57 "10-element Vector{Int64}:\n",
58 " 23\n",
59 " 17\n",
60 " 14\n",
61 " 6\n",
62 " 13\n",
63 " 10\n",
64 " 1\n",
65 " 5\n",
66 " 7\n",
67 " 12"
68 ]
69 },
70 "execution_count": 18,
71 "metadata": {},
72 "output_type": "execute_result"
73 }
74 ],
75 "source": [
76 "a = [23, 17, 14, 6, 13, 10, 1, 5, 7, 12]"
77 ]
78 },
79 {
80 "cell_type": "code",
81 "execution_count": 19,
82 "id": "8125a148-bcb9-4f87-b4ed-c65f58858907",
83 "metadata": {},
84 "outputs": [],
85 "source": [
86 "mh(a, 1)"
87 ]
88 },
89 {
90 "cell_type": "code",
91 "execution_count": 20,
92 "id": "aff290ac-5533-4525-98cc-83f6a457c9dc",
93 "metadata": {},
94 "outputs": [
95 {
96 "data": {
97 "text/plain": [
98 "10-element Vector{Int64}:\n",
99 " 23\n",
100 " 17\n",
101 " 14\n",
102 " 6\n",
103 " 13\n",
104 " 10\n",
105 " 1\n",
106 " 5\n",
107 " 7\n",
108 " 12"
109 ]
110 },
111 "execution_count": 20,
112 "metadata": {},
113 "output_type": "execute_result"
114 }
115 ],
116 "source": [
117 "a"
118 ]
119 },
120 {
121 "cell_type": "code",
122 "execution_count": null,
123 "id": "2523d3b8-7d62-4589-a3b3-b917e920cc4a",
124 "metadata": {},
125 "outputs": [],
126 "source": []
127 }
128 ],
129 "metadata": {
130 "kernelspec": {
131 "display_name": "Julia 1.10.4",
132 "language": "julia",
133 "name": "julia-1.10"
134 },
135 "language_info": {
136 "file_extension": ".jl",
137 "mimetype": "application/julia",
138 "name": "julia",
139 "version": "1.10.4"
140 }
141 },
142 "nbformat": 4,
143 "nbformat_minor": 5
144}