1 快排
先用一个x把所有数组元素大致分一下
然后分治递归
应用 快速查找 通过筛选只要quick_sort()一半
2 归并
先用一个x把原数组分治递归 使得左右两边各自有序
然后合并
3 KMP
先一个循环得到ne[]数组
然后一个循环比对
4 Dijkstra
先存图 然后循环n次 每次选出一个dist[]最小的点
然后用这个点去遍历他能到达的所有点的距离 如果到重点的dist[]会因此减小 那就更新
5 01背包
for(int j = 0; j <= m; j++) dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - v[i]] + w[i])
for(int j = m; j >= v[i]; j–) dp[j] = max(dp[j], dp[j - v[i]] + w[i]);
6 完全背包
for(int j = 0; j <= m; j) dp[i][j] = max(dp[i - 1][j], dp[i][j - v[i]] + w[i]);
for(int j = v[i]; j <= m; j) dp[j] = max(dp[j], dp[j - v[i]] + w[i]);
7 多重背包
暴力循环
for(int j = 0; j <= m; j)
for(int k = 0; k <= s[i] && k * v[i] <= j; k)
dp[i][j] = max(dp[i][j], dp[i - 1][j - k * v[i]] + k * w[i]);
二进制优化拆成01背包压缩时间