Go语言数据结构和算法(三十四)分治算法

分治算法是将一个巨大的输入分解成若干个小块.在每个小块上解决问题.然后将分段

解决方案合并为全局解决方案.

1.步骤:

分解:将原始问题分解成一组子问题.

解决子问题:递归的单独解决每个子问题.

合并子问题:将子问题的解放在一起得到整个问题的解.

2.应用:

2.1快速排序:

又称分区交互排序.是最有效率的排序算法.它首先从数组中选择一个枢轴值.然后将剩

下的数组元素分成两个子数组.通过将每个元素与枢轴值进行比较来进行分区.它比较

元素是否具有比枢轴值更大或更小的值.然后递归的对数组进行排序.

2.2归并排序:

这是通过比较对数组进行排序的算法.它首先将数组划分为子数组.然后递归对的对每

个子数组进行排序.排序完成后.将它们合成一个数组.

2.3二分搜索:

二分搜索是一种搜索算法.也称为半区间搜索或对数搜索.它将目标值与排序数组中存

在的中间元素进行比较.比较后.如果数值不同.则最终剔除不能包含目标的那一半数

组.在继续寻找另一半数组.直到找到目标值.如果搜索另一半也找不到.则断定目标值

不在数组中.

2.4最近点问题:

强调在给定n个点的情况下.找出度量空间中最近的一对点.使得这对点之间的距离应

该最小.

2.5Kadane算法:

该算法是解决最大子数组问题的有效算法.该问题是在整数数组中找到最大和的连续

子数组的任务.

2.6平衡二叉树构造:

给定一个排序的整数数组.任务是构造一个平衡二叉树.可以使用递归构造根节点的左

右子树的分治算法来解决.

3.点对点实现:

3.1方法:
package data import ( "math" "sort" ) func ClosestPair(points [][]int) float64 { h := make(helper, len(points)) for i, v := range points { //计算两点之间的距离. h[i] = [2]float64{math.Hypot(float64(v[0]), float64(v[1])), float64(i)} } //将数组按照升序排序. sort.Sort(h) if len(h) >= 1 { return h[0][0] } return 0 } type helper [][2]float64 func (h helper) Swap(i, j int) { h[i], h[j] = h[j], h[i] } func (h helper) Less(i, j int) bool { return h[i][0] < h[j][0] } func (h helper) Len() int { return len(h) }
3.2main方法:
func main() { points := [][]int{{3, 3}, {5, -1}, {-2, 4}} pair := data.ClosestPair(points) fmt.Println(pair) }

4.实战:

4.1方法:
func ClosestPair2(points [][]int, k int) [][]int { if len(points) == k { return points } var v []int var re [][]int m := make(map[int]int) for i := 0; i < len(points); i++ { m[i] = points[i][0]*points[i][0] + points[i][1]*points[i][1] v = append(v, i) } closestUtil(m, v, 0, len(v)-1, k) for i := 0; i < k; i++ { re = append(re, points[v[i]]) } return re } func closestUtil(m map[int]int, s []int, start int, end int, k int) { p := m[s[end]] l := start for i := start; i < end; i++ { if m[s[i]] < p { s[l], s[i] = s[i], s[l] l++ } } s[l], s[end] = s[end], s[l] if k == l { return } else if l < k { closestUtil(m, s, l+1, end, k) } else { closestUtil(m, s, start, l-1, k) } }
4.2main方法:
func main() { points := [][]int{{2, 3}, {12, 30}, {40, 50}, {5, 1}, {12, 10}, {3, 4}} k := 2 res := data.ClosestPair2(points, k) fmt.Println(res) }

忽然世界开始变得很慢.时间也变得很慢.

如果大家喜欢我的分享的话.可以关注我的微信公众号

念何架构之路

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1131957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go语言初认识

背景: python粗略算是懂后, 了解到近期热门的一种语言go。 在多进程等方面的确有很多优势&#xff0c;尤其在解析pcap等时&#xff0c;算力强大&#xff0c;运行时间直接少了一半以上&#xff0c;应用在后端也非常有优势。 本文记录go语言的学习和实战应用。 安装go : linux…

ai-agent 一个强大的辅助工具

随着ai的大热&#xff0c;如何更好的利用ai&#xff0c;而不单单作为知识的查询。如果它能帮我们设计测试用例&#xff0c;执行用例&#xff0c;并给出结果&#xff0c;甚至可以帮我们开发&#xff0c;是不是一个梦中情tool。 这不单单是幻想&#xff0c;目前不少大厂已经实现&…

这些 Web 技术,我学完就后悔:别像我一样把时间浪费在“看起来很香”的坑里

我有一支技术全面、经验丰富的小型团队&#xff0c;专注高效交付中等规模外包项目&#xff0c;有需要外包项目的可以联系我2015 年我刚一头扎进 Web 开发时&#xff0c;脑子里只有一句话&#xff1a;多学点&#xff0c;总没坏处。于是我像捡破烂一样追教程、刷博客、看 YouTube…

这些 Web 技术,我学完就后悔:别像我一样把时间浪费在“看起来很香”的坑里

我有一支技术全面、经验丰富的小型团队&#xff0c;专注高效交付中等规模外包项目&#xff0c;有需要外包项目的可以联系我2015 年我刚一头扎进 Web 开发时&#xff0c;脑子里只有一句话&#xff1a;多学点&#xff0c;总没坏处。于是我像捡破烂一样追教程、刷博客、看 YouTube…

quickbi数据集报错

错误码: NOX5200013traceId: a2b3506c-aa59-4b01-a48e-2aa348021a72[NOX5200013] invalid calculate field [直播购买客户], expression syntax error or some dependence field [14513112cb] has gone.原因&#xff1a;之前新建的维度字段或者计算字段&#xff0c;依赖了其他字…

TypeScript 的本质并非类型,而是信任

我有一支技术全面、经验丰富的小型团队&#xff0c;专注高效交付中等规模外包项目&#xff0c;有需要外包项目的可以联系我静态类型悄悄修好的&#xff0c;不只是语法错误&#xff0c;而是你们的精神状态。老实说&#xff0c;我第一次听到 TypeScript 的时候&#xff0c;脑子里…

DSP算法学习

都是以QPSK为例针对不同的qam信号&#xff0c;一些算法可能不同&#xff0c;还需读者再去学习从IQ时延对准-IQ不平衡-粗色散补偿-自适应均衡解复用-频偏估计与补偿-载波相位恢复

信任与怀疑之间,我们如何与AI医生共存?

2025年&#xff0c;如果你在深夜感到喉咙干痒、轻微发热&#xff0c;第一反应可能不再是翻找家里的退烧药&#xff0c;而是打开手机&#xff0c;对着某款AI健康应用描述症状。几秒钟后&#xff0c;屏幕上跳出一行字&#xff1a;初步判断为风热感冒初期&#xff0c;建议多饮水、…

年底的 Java 行情怎么样?

大家好&#xff0c;我是R哥。2025 年的最后一个月了&#xff0c;也是最后一天了&#xff0c;说说这个月的 Java 行情怎么样。拿我们面试辅导的战绩来说吧&#xff0c;最后一个月 Offer 虽然不多&#xff0c;但质量非常高&#xff0c;都是互联网大厂&#xff08;字节、阿里、腾讯…

计及光伏电站快速无功响应特性的分布式电源优化配置方法(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&a…

【无功优化】基于二阶锥规划的配电网无功优化算法【IEEE33节点】(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&a…

动态调整保留周期(如高频访问文件延长生命周期)

临时文件自动化管理方案技术文章大纲背景与需求分析临时文件的定义与常见场景&#xff08;如日志、缓存、中间计算结果&#xff09;管理痛点&#xff1a;空间占用、安全风险、手动清理效率低自动化管理的核心目标&#xff1a;效率提升、资源优化、安全性保障技术方案设计要点生…

基于氢储能的热电联供型微电网优化调度方法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

[特殊字符]_容器化部署的性能优化实战[20260108164558]

作为一名经历过多次容器化部署的工程师&#xff0c;我深知容器化环境下的性能优化有其独特之处。容器化虽然提供了良好的隔离性和可移植性&#xff0c;但也带来了新的性能挑战。今天我要分享的是在容器化环境下进行Web应用性能优化的实战经验。 &#x1f4a1; 容器化环境的性能…

[特殊字符]_微服务架构下的性能调优实战[20260108162541]

作为一名经历过多个微服务架构项目的工程师&#xff0c;我深知在分布式环境下进行性能调优的复杂性。微服务架构虽然提供了良好的可扩展性和灵活性&#xff0c;但也带来了新的性能挑战。今天我要分享的是在微服务架构下进行性能调优的实战经验。 &#x1f4a1; 微服务架构的性…

【SCI复现】基于纳什博弈的多微网主体电热双层共享策略研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

[特殊字符]_Web框架性能终极对决:谁才是真正的速度王者[20260108163208]

作为一名拥有10年开发经验的全栈工程师&#xff0c;我经历过无数Web框架的兴衰更替。从早期的jQuery时代到现在的Rust高性能框架&#xff0c;我见证了Web开发技术的飞速发展。今天我要分享一个让我震惊的性能对比测试&#xff0c;这个测试结果彻底改变了我对Web框架性能的认知。…

[特殊字符]_网络IO性能优化:从TCP到HTTP的层层优化[20260108163835]

作为一名专注于网络性能优化的工程师&#xff0c;我在过去的项目中积累了丰富的网络IO优化经验。最近&#xff0c;我参与了一个对网络性能要求极高的项目——实时视频流平台。这个项目让我重新审视了Web框架在网络IO方面的表现。今天我要分享的是基于真实项目经验的网络IO性能优…

DeepSeek突然更新R1论文:暴增64页,能公开的全公开了

来源&#xff1a;DeepTech深科技 运营/排版&#xff1a;何晨龙 2025 年 9 月&#xff0c;DeepSeek&#xff0d;R1 论文以封面文章的形式登上 Nature 杂志&#xff0c;成为全球首个通过顶级期刊独立同行评审的主流大语言模型。从 2 月 14 日投稿到 9 月 17 日正式发表&#xff0…

Windows XP,Vista,7,8.1,10, 11历代Windows系统性能横向评测

https://hackaday.com/2026/01/02/benchmarking-windows-against-itself-from-windows-xp-to-windows-11/ 测试涵盖Windows XP、Vista、7、8.1、10和11的旗舰版&#xff0c;所有系统均配备最新服务包与更新&#xff0c;并安装于同一台联想ThinkPad X220笔记本电脑。该设备搭载…