# Array List Implements a custom dynamic array (similar to a standard Vector) that manually manages memory allocation and resizing. It includes built-in Binary Heap logic to perform in-place Heapsort and priority-queue operations (like deleting the top element). It also features a utility to visualize the array's internal structure as a printed ASCII tree. Execution result: ``` Data unsorted: [0, 1, 4, 9, 16, 25, 36, 0, 8, 18, 30, 44, 60, 78, 0, 15, 32, 51, 72, 95, 120, 0, 22, 46, 72, 100, 130, 162, 0, 29, 60, 93] ┌ 93 ┌ 15 ┌ 0 │ └ 32 ┌ 9 │ │ ┌ 51 │ └ 8 │ └ 72 ┌ 1 │ │ ┌ 95 │ │ ┌ 18 │ │ │ └ 120 │ └ 16 │ │ ┌ 0 │ └ 30 │ └ 22 0 │ ┌ 46 │ ┌ 44 │ │ └ 72 │ ┌ 25 │ │ │ ┌ 100 │ │ └ 60 │ │ └ 130 └ 4 │ ┌ 162 │ ┌ 78 │ │ └ 0 └ 36 │ ┌ 29 └ 0 └ 60 Data ascending: [0, 0, 0, 0, 0, 1, 4, 8, 9, 15, 16, 18, 22, 25, 29, 30, 32, 36, 44, 46, 51, 60, 60, 72, 72, 78, 93, 95, 100, 120, 130, 162] ┌ 162 ┌ 30 ┌ 8 │ └ 32 ┌ 0 │ │ ┌ 36 │ └ 9 │ └ 44 ┌ 0 │ │ ┌ 46 │ │ ┌ 15 │ │ │ └ 51 │ └ 0 │ │ ┌ 60 │ └ 16 │ └ 60 0 │ ┌ 72 │ ┌ 18 │ │ └ 72 │ ┌ 1 │ │ │ ┌ 78 │ │ └ 22 │ │ └ 93 └ 0 │ ┌ 95 │ ┌ 25 │ │ └ 100 └ 4 │ ┌ 120 └ 29 └ 130 Data descending: [162, 130, 120, 100, 95, 93, 78, 72, 72, 60, 60, 51, 46, 44, 36, 32, 30, 29, 25, 22, 18, 16, 15, 9, 8, 4, 1, 0, 0, 0, 0, 0] ┌ 0 ┌ 32 ┌ 72 │ └ 30 ┌ 100 │ │ ┌ 29 │ └ 72 │ └ 25 ┌ 130 │ │ ┌ 22 │ │ ┌ 60 │ │ │ └ 18 │ └ 95 │ │ ┌ 16 │ └ 60 │ └ 15 162 │ ┌ 9 │ ┌ 51 │ │ └ 8 │ ┌ 93 │ │ │ ┌ 4 │ │ └ 46 │ │ └ 1 └ 120 │ ┌ 0 │ ┌ 44 │ │ └ 0 └ 78 │ ┌ 0 └ 36 └ 0 Data [1, 12, 9, 5, 6, 10] ┌ 5 ┌ 12 │ └ 6 1 │ ┌ 10 └ 9 Deleting top: Some(12) ┌ 5 ┌ 6 │ └ 1 10 └ 9 Deleting top with one element: None ```