Files
hello-algo/ru/codes/kotlin/chapter_heap/heap.kt
T
Yudong Jin 772183705e Add ru version (#1865)
* Add Russian docs site baseline

* Add Russian localized codebase

* Polish Russian code wording

* Update ru code translation.

* Update code translation and chapter covers.

* Fix pythontutor extraction.

* Add README and landing page.

* placeholder of profiles

* Use figures of English version

* Remove chapter paperbook
2026-03-28 04:24:07 +08:00

66 lines
2.2 KiB
Kotlin

/**
* File: heap.kt
* Created Time: 2024-01-25
* Author: curtishd (1023632660@qq.com)
*/
package chapter_heap
import utils.printHeap
import java.util.*
fun testPush(heap: Queue<Int>, _val: Int) {
heap.offer(_val) // Добавление элемента в кучу
print("\nПосле добавления элемента $_val в кучу\n")
printHeap(heap)
}
fun testPop(heap: Queue<Int>) {
val _val = heap.poll() // Извлечение элемента с вершины кучи
print("\nПосле извлечения элемента вершины кучи $_val\n")
printHeap(heap)
}
/* Driver Code */
fun main() {
/* Инициализация кучи */
// Инициализация минимальной кучи
var minHeap = PriorityQueue<Int>()
// Инициализация максимальной кучи (достаточно изменить Comparator с помощью lambda-выражения)
val maxHeap = PriorityQueue { a: Int, b: Int -> b - a }
println("\nНиже приведен тестовый пример для max-heap")
/* Добавление элемента в кучу */
testPush(maxHeap, 1)
testPush(maxHeap, 3)
testPush(maxHeap, 2)
testPush(maxHeap, 5)
testPush(maxHeap, 4)
/* Получение элемента с вершины кучи */
val peek = maxHeap.peek()
print("\nЭлемент на вершине кучи = $peek\n")
/* Извлечение элемента с вершины кучи */
testPop(maxHeap)
testPop(maxHeap)
testPop(maxHeap)
testPop(maxHeap)
testPop(maxHeap)
/* Получение размера кучи */
val size = maxHeap.size
print("\nКоличество элементов в куче = $size\n")
/* Проверка, пуста ли куча */
val isEmpty = maxHeap.isEmpty()
print("\nПуста ли куча: $isEmpty\n")
/* Построить кучу по входному списку */
// Временная сложность равна O(n), а не O(nlogn)
minHeap = PriorityQueue(mutableListOf<Int?>(1, 3, 2, 5, 4))
println("\nПосле построения min-heap из входного списка")
printHeap(minHeap)
}