算法
王安安的记录
这个作者很懒,什么都没留下…
展开
-
【插入希尔归并选择冒泡优化快排+重看递归】
每次处理都是两两相邻的比较[稳定的,判断的时候用>,而非>=],将大的往后传递【最终每一趟都把最大的传递到最后面了】时间复杂度: o( n^2) 最好的情况:O(n);//每次都走break;打扑克:手里面大的是排好序的,另外是待排序的,一张一张插入后要保证有序。2、从无序中找到最小值,排在有序的后面【无需‘移动‘】【不稳定排序】每一趟最坏的情况:每个都交换O(n^2);对于与已经排好序的则变成了O(n);1、每个泡泡都要处理。原创 2023-10-21 02:06:30 · 64 阅读 · 2 评论 -
【力扣3无重复字符的最长字串|滑动窗口|哈希Map、Set不同】
重复就记录下当前的最长字串长度,清理记录下的不重复字符,回过头,再重新判断充不重复。-不重复就持续往后判断;原创 2023-09-20 20:50:26 · 31 阅读 · 1 评论 -
详细动态规划-一维二维力扣例题
动态规划思路:1、数组元素的含义?//2、数组元素之间的关系。2、数组元素之间的关系式。//1、数组存储的含义。原创 2023-09-12 16:00:53 · 50 阅读 · 0 评论 -
快速排序分治递归
#include <iostream>using namespace std;int KuaiPai(int a[], int l, int r);void quicksort(int a[], int l, int r);void print(int a[],int i);int flag = 0;void print(int a[],int i){ cout << "第" << flag << "次排序:" << end.原创 2022-05-12 11:23:24 · 74 阅读 · 0 评论 -
算法回溯法-0-1背包c++
// 回溯法0-1背包.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//////思路差异:// 解为子集树:<=c,可进入左子集;>maxvule,则可以进入由结点// // ////#include <iostream>#include <algorithm>using namespace std;class Knap {public: void Backtrack(int i); int bound(int i); int c,原创 2022-04-14 20:15:55 · 925 阅读 · 1 评论 -
回溯法-子集树递归树-装载问题
回溯法深度优先策略(回忆深度优先遍历二叉树思路)解题步骤: 1)针对所给问题,定义问题的解空间; 2)确定易于搜索的解空间结构; 3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数(****约束函数除去不满足约束的子树,限界函数减去得不到最优解的子树**)**避免无效搜索## 子集树和递归树扩展结点:一个正在产生儿子的结点称为扩展结点。活结点:一个自身已生成但其儿子还没有全部生成的节点称做活结点。死结点:一个所有儿子已经产生的结点称做死结点。1.当所给的问题是从n个元素的集合S中找原创 2022-04-14 14:51:23 · 1466 阅读 · 2 评论 -
全排列perm
#include <iostream>using namespace std;void perm(int a[], int k, int m);inline void swap(int& a, int& b);void perm(int a[], int k, int m){ if (k == m) { for (int i = 0; i <= m; i++) cout << a[i];原创 2022-04-13 01:36:59 · 395 阅读 · 0 评论 -
动态规划-流水作业调动Johnson法则
//问题分析:// 1.作业合集N={1,2,3…n},//S属于N;M1上不停止的工作,// 因此M1加工S中的作业时,M2还在加工N-S中的某作业,// 需要等时间t后才能利用M2.// 2.这种情况下,完成S作业的最短时间记为T( S,t);//t为安排{N-S}后面的等待时间// 流水作业调度问题的最优值为T(N,0);//M2无需等待的情况// 3.对于n个作业,其最优调度为Π,时间为aΠ(1)+T’;// T’为M2的等待时间为bΠ(1)时,作业aΠ(2,。。。。n)的最优时间/原创 2022-04-13 00:09:36 · 631 阅读 · 0 评论 -
贪心算法-单源最短路径
单源最短路径原创 2022-04-07 20:20:46 · 1078 阅读 · 0 评论 -
动态规划-最大公共子序列c++
最长公共子序列-动态规划两个基本要素!!!!!!// 1最优子结构// 从后往前推,x,y的最优结果包含了x,y前缀的!最长公共子序列// xn=ym,则该元素一定在最长公共子序列里面---》xn!=ym,(xn-1,ym) or(xn,ym-1)里面继续找// 大问题变小原创 2022-04-05 10:16:21 · 685 阅读 · 0 评论 -
动态规划矩阵连乘c++
矩阵连乘法//维数分别为10*100 , 100*5 , 5*50 // 按此顺序计算需要的次数// ((A1*A2)*A3):10X100X5+10X5X50=7500次,//按此顺序计算需要的次数// (A1*(A2*A3)):10*5*50+10*100*50=75000次 //ai*(bi*bj原创 2022-03-30 21:08:26 · 1460 阅读 · 0 评论 -
动态规划-0-1背包问题c++实现
//目标是书包内物品的总价值,而变量是物品和书包的限重//根据动态规划解题步骤(问题抽象化、建立模型、寻找约束条件、//判断是否满足最优性原理、//找大问题与小问题的递推关系式、填表、寻找解组成)原创 2022-03-29 23:17:10 · 1083 阅读 · 0 评论