算法期末总结题

快排

思想:分治的核心就是找到一个问题,这个问题的子问题和这个问题本身要用一样的解法,但是问题的规模不一样。 快排的核心就是将数组分成左右子数组,怎么分呢? 找出一个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

背包问题

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

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

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

最大子段和

dp[0] = nums[0] 然后从1开始遍历

相关推荐
bai_lan_ya10 分钟前
使用linux的io文件操作综合实验_处理表格
linux·服务器·算法
计算机安禾14 分钟前
【C语言程序设计】第36篇:二进制文件的读写
c语言·开发语言·c++·算法·github·visual studio code·visual studio
ZPC821015 分钟前
OLOv11 + 深度相机的方案实现高精度3D定位
人工智能·数码相机·算法·机器人
_日拱一卒20 分钟前
LeetCode:字母异位词分组
算法·leetcode·职场和发展
Dfreedom.21 分钟前
机器学习经典算法全景解析与演进脉络(监督学习篇)
人工智能·学习·算法·机器学习·监督学习
2301_8073671929 分钟前
C++代码风格检查工具
开发语言·c++·算法
Morwit29 分钟前
*【力扣hot100】 215. 数组中的第K个最大元素
数据结构·c++·算法·leetcode·职场和发展
奔袭的算法工程师30 分钟前
用AI写天线阵列排布算法
人工智能·算法·信号处理
ab15151731 分钟前
3.20二刷基础121、127,完成进阶61、62
数据结构·算法·排序算法
I_LPL32 分钟前
day58 代码随想录算法训练营 图论专题11
数据结构·算法·图论