РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
932 of 1593 menu

Функция heap.Push

Функция heap.Push добавляет новый элемент в кучу, сохраняя ее свойства. Она принимает два параметра: первый — это интерфейс heap.Interface, который представляет кучу, второй — элемент, который нужно добавить. Функция автоматически корректирует структуру кучи, чтобы она оставалась упорядоченной.

Синтаксис

heap.Push(h, x)

Пример

Давайте создадим кучу из целых чисел и добавим в нее новый элемент:

package main import ( "container/heap" "fmt" ) type IntHeap []int func (h IntHeap) Len() int { return len(h) } func (h IntHeap) Less(i, j int) bool { return h[i] < h[j] } func (h IntHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] } func (h *IntHeap) Push(x any) { *h = append(*h, x.(int)) } func (h *IntHeap) Pop() any { old := *h n := len(old) x := old[n-1] *h = old[0 : n-1] return x } func main() { h := &IntHeap{1, 3, 5, 7, 9} heap.Init(h) heap.Push(h, 4) fmt.Println(*h) }

Результат выполнения кода:

[1 3 4 7 9 5]

Пример

Давайте создадим кучу из строк и добавим в нее новый элемент:

package main import ( "container/heap" "fmt" ) type StringHeap []string func (h StringHeap) Len() int { return len(h) } func (h StringHeap) Less(i, j int) bool { return h[i] < h[j] } func (h StringHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] } func (h *StringHeap) Push(x any) { *h = append(*h, x.(string)) } func (h *StringHeap) Pop() any { old := *h n := len(old) x := old[n-1] *h = old[0 : n-1] return x } func main() { h := &StringHeap{"abcde", "bcd", "cdef"} heap.Init(h) heap.Push(h, "abc") fmt.Println(*h) }

Результат выполнения кода:

[abc abcde bcd cdef]

Смотрите также

  • функцию heap.Init,
    которая инициализирует кучу
  • функцию heap.Pop,
    которая удаляет и возвращает минимальный элемент
  • функцию heap.Fix,
    которая восстанавливает порядок после изменения элемента
  • функцию heap.Remove,
    которая удаляет элемент по индексу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить