☰
分治算法题目记录
2026/10/7 8:08:19 网站建设 项目流程

不了解分治算法,但是实际中已经使用分治算法了。

分治算法,就是将一个问题拆分,将数据结构拆分,拆分成几份,每一份各自计算,然后再汇总结果。

二分法是典型的分治算法,也是分治算法的基本思想,将数据结构分成两份,两份分别完成自己的工作。

快速排序也属于分治算法,将数据分成左右两侧,分别排序。

链表排序也属于分治算法,也属于归并算法,归并算法就是器皿中额很多小水珠,逐渐合并成一个大水珠的过程。可以直接从微观到宏观进行归并,也可以采用递归算法进行归并,递归算法更好理解,把每一半归并完,最大的两半再归并。

1寻找峰值

162. 寻找峰值 - 力扣(LeetCode)

这个题目,如果不考虑时间复杂度的影响,是很简单的,直接遍历就可以了,两个断点,两个边界条件特殊处理,特殊判断就可以。

但是这个题目有时间复杂度的要求,就是O(log n),要满足这个时间复杂度,一般就是二分法。时间复杂度和空间复杂度,其实不单单在讨论数据结构和算法题目的时候要考虑,在实际写代码的时候也要考虑,在Linux下编程一般很少考虑的这么精致,但是也有很多人写代码很精致,每段代码都要考虑时间复杂度和空间复杂度。

解决这个题目的算法叫上坡法。只要当前这个中点满足条件,那么这一侧数据一定是满足条件的。

快速排序和堆排序的时间复杂度是O(nlogn),而不是O(logn),时间复杂度要具体问题具体分析,而不要靠背,可能,这样肯定会做错。

2搜索插入位置

35. 搜索插入位置 - 力扣(LeetCode)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询