首页 > 其他分享 >Go最小堆

Go最小堆

时间:2024-10-11 15:22:21浏览次数:1  
标签:IntHeap int fmt 元素 最小 func Go

package main

import (
	"container/heap"
	"fmt"
)

// IntHeap 是一个包含整数的切片,它实现了 heap.Interface 接口。
type IntHeap []int

// Len 方法返回堆中的元素数量。
func (h IntHeap) Len() int { return len(h) }

// Less 方法报告索引 i 的元素是否比索引 j 的元素小。
func (h IntHeap) Less(i, j int) bool { return h[i] < h[j] }

// Swap 方法交换索引 i 和 j 处的元素。
func (h IntHeap) Swap(i, j int) { h[i], h[j] = h[j], h[i] }

// Push 方法将元素 x 添加到堆的最后。
func (h *IntHeap) Push(x interface{}) {
	*h = append(*h, x.(int))
}

// Pop 方法从堆中取出最后一个元素,并返回它。
func (h *IntHeap) Pop() interface{} {
	old := *h
	n := len(old)
	x := old[n-1]
	*h = old[0 : n-1]
	return x
}

func main() {
	// 创建一个最小堆实例。
	h := &IntHeap{2, 1, 5}
	heap.Init(h)
	fmt.Println("最小元素:", (*h)[0]) // h[0] 是最小元素

	// 添加一个新元素到堆中。
	heap.Push(h, 3)
	fmt.Println("最小元素,在添加 3 之后:", (*h)[0])

	// 移除并返回堆顶元素。
	pop := heap.Pop(h).(int)
	fmt.Println("弹出的元素:", pop)
	fmt.Println("最小元素,在移除元素之后:", (*h)[0])
}
最小元素: 1
最小元素,在添加 3 之后: 1
弹出的元素: 1
最小元素,在移除元素之后: 2

标签:IntHeap,int,fmt,元素,最小,func,Go
From: https://www.cnblogs.com/qcy-blog/p/18458498

相关文章

  • M.2移动硬盘打造Win To Go系统:高效分区存储文件全攻略
    前言大家好,我是Frpee内网穿透开发者xnkyn,曾经的我一直在互联网上学习技术,这次我要在博客园这片净土上给中国互联网技术做贡献,这是我在博客园写的第一篇技术文章,后续我会分享更多的技术干货文章,包括软件开发,系统运维等方面的知识...制作背景M.2移动硬盘凭借其小巧的......
  • 【开题报告】基于django+vue健身房管理系统(论文+源码)计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着现代社会对健康生活的追求日益增长,健身房作为一种提供专业健身服务和设施的场所,受到了广大消费者的青睐。然而,传统的健身房管理方式往......
  • MongoDB新的均衡策略和自动合并
    均衡器的用途均衡器是一个后台线程,运行于配置服务器(configserver)副本集的主节点。它定期检查分片中块(chunks)和数据的分布情况。如果达到某些迁移阈值,均衡器就会决定将块从一个分片迁移到另一个分片。其主要目标是在所有分片中拥有大致相同的数据量。 在繁忙的集群中,迁移......
  • 使用Go语言破解滑块验证码的完整流程
    在本文中,我们将通过Go语言破解滑块验证码,逐步讲解如何计算滑块移动距离、生成轨迹并提交验证请求。下载验证码图片使用Go的net/http库来获取验证码图片,并保存到本地。packagemainimport("fmt""io/ioutil""net/http""os")funcdownloadImage(urlstring,fileP......
  • ArgoCD + ArgoCD Image Updater 部署实现
    部署思路踩坑整理1、ArgoCD和ArgoCDImageUpdater是2个不同的程序。"ArgoCDImageUpdater小工具"没有集成在ArgoCD中需要单独部署。2、单独的ArgoCD能够实现基于git仓库变更作为应用部署的事实来源[参考子页:argocd根据镜像tag变化实现自动发布的2种方式];ArgoCD+"ArgoCD......
  • 基于django的民宿预定管理系统的设计与实现---附源码60197
    目录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.1.1经济可行性分析2.1.2技术可行性分析2.1.3操作可行性分析2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.......
  • MongoDB集群的启动和关闭顺序
    分片(Shard)环境中的启动和关闭1.启动这个具体的参照分片的配置,启动的顺序是configserver->副本集/分片(shardX)->->mongos2.关闭因为mongos是分片架构最前端的入口,所以关闭顺序:mongos->副本集/分片(shardX)->configserver单实例:直接关闭db.getSiblingDB(“admin”).shutdow......
  • python+django+uniapp高校社团管理系统 微信小程序 a4z3n
    目录项目介绍具体实现截图开发者工具介绍技术路线解决的思路性能/安全/负载方面开发语言以及框架介绍数据库设计python-flask核心代码部分展示python-django核心代码部分展示详细视频演示源码获取项目介绍主要是对于申请入社工作调研,以及对申请入社信息采集、存储、......
  • 一个使用Oracle GoldenGate实现数据复制的例子
    OracleGoldenGate是一种数据复制和实时数据集成软件,用于在不同数据库之间进行数据同步和复制。以下是一个使用OracleGoldenGate实现数据复制的例子:假设我们有两个Oracle数据库实例:源数据库(source)和目标数据库(target),我们希望将源数据库中的某个表的数据实时复制到目标数据库......
  • 基于django+vue+Vue个性化图书借阅系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,图书馆作为知识传播与学习的重要场所,面临着读者需求多样化、图书资源海量化的挑战。传统的图书借阅系统往往采用一......