算法期末总结题

快排

思想:分治的核心就是找到一个问题,这个问题的子问题和这个问题本身要用一样的解法,但是问题的规模不一样。 快排的核心就是将数组分成左右子数组,怎么分呢? 找出一个pivot(一般是这一次排序的首元素)将以下逻辑写成一个方法partition,将小于等于pivot的数都放到左边,将大于等于pivot的数都放到右边,然后将pivot放到中间。 接着对左手数组重复这个过程,整体就有序了。 提问为什么会有序呢? 因为在一次排列的过程中pivot找到了自己的位置,经过有限次的再分,一定会让快排处理的对象只有一个元素,那这一个元素本身就是有序的,返回。那么整体就是有序的了。

代码:

时间复杂度分析:

最好,平均,o(nlogn)排序树 层数(logn)

最坏o(n^2) 因为最坏的树高是(n)

选第二大(选第k大)

参考快排的思想 mid就是当前找到的下标,如果当前下标不是就在左区间搜索(返回左区间的搜索值)反之搜索有区间。 第k大就是搜索的下标不同。

汉诺塔

思想:假设有A,B,C三个柱,src(起始柱),aux(辅助柱),dst(目标柱)。

如果有一个盘子,只需要从src移动到dst。 如果有2个那就将上面的一个放到aux,最后一个放到dst,接将aux的放到dst。

结合两个盘子的思想,我们只需要将A柱的前n-1盘子当做一个一个盘子。 那么整体就只有两个盘子。那么我们整体的逻辑就是:

如果只有1个盘子直接执行从src移动到dst

1.将n-1个盘子从src移动到aux,辅助柱是dst

2.将src最后的一个移动到dst

3.将n-1个盘子从aux移动到dst,通过src

背包问题

dpij 的值为:从0-i号物品任选,背包容量为j的情况下可获得的最大价值。

最长公共子序列(字符从1开始)

前几个,下标不就是i-1,j-1

最大子段和

dp0 = nums0 然后从1开始遍历

相关推荐
不知名的老吴12 分钟前
经典算法题之行星碰撞
数据结构·算法
丘山望岳18 分钟前
剑起霜华——平衡二叉树(AVL树 )精讲
开发语言·数据结构·c++
西安邮电大学19 分钟前
有关数组的经典算法题
java·后端·其他·算法·面试
学Linux的语莫24 分钟前
大模型微调数据集格式详解:Alpaca、ShareGPT、DPO、KTO、预训练数据怎么构建?
人工智能·算法·机器学习·微调格式
wayz1125 分钟前
Momentum:UO(终极震荡指标)技术指标详解
算法·金融·数据分析·量化交易·特征工程
Boom_Shu32 分钟前
浅拷贝与深拷贝
开发语言·c++·算法
LuminousCPP1 小时前
数据结构 - 单链表第一篇:单链表基础操作
c语言·数据结构·经验分享·笔记·学习
触底反弹1 小时前
一文彻底搞懂 JavaScript 栈和队列(建议收藏)
javascript·算法·面试
WL学习笔记1 小时前
通讯录(顺序表实现)
c语言·数据结构·算法
JieE2121 小时前
树与二叉树--JS实例
javascript·数据结构