My omnium-gatherom of scripts and source code.
at main 144 lines 3.0 kB view raw
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}