概念: 算法主要由头文件 <algorithm> <functional> <numeric>组成 <algorithm>是所有STL头文件中最大的一个,范围涉及到比较/交换/查找/遍历/赋值/修改等 <numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数 <functional ...
分类:
编程语言 时间:
2021-06-24 17:48:14
阅读次数:
0
排序方法 平均情况 最坏情况 最好情况 空间复杂度 稳定性 复杂性 直接插入排序 O(n^2) O(n^2) O(n) O(1) 稳定 简单 希尔排序 O(nlog2n) O(nlog2n) O(1) 不稳定 较复杂 冒泡排序 O(n^2) O(n^2) O(n) O(1) 稳定 简单 快速排序 O ...
分类:
编程语言 时间:
2021-05-24 10:05:48
阅读次数:
0
哈希算法与 \(KMP\) 算法是两种处理字符串问题的常用算法 哈希 \(Hash\) 哈希算法是通过构造一个哈希函数,将一种数据转化为可用变量表示或者是可作数组下标的数 哈希函数转化得到的数值称之为哈希值 通过哈希算法可以实现快速匹配与查找 字符串 \(Hash\) 一般用于寻找一个字符串的匹配串 ...
分类:
其他好文 时间:
2021-01-08 11:26:36
阅读次数:
0
原创公众号:bigsai文章收录在bigsai-algorithm前言分治算法(divideandconquer)是五大常用算法(分治算法、动态规划算法、贪心算法、回溯法、分治界限法)之一,很多人在平时学习中可能只是知道分治算法,但是可能并没有系统的学习分治算法,本篇就带你较为全面的去认识和了解分治算法。在学习分治算法之前,问你一个问题,相信大家小时候都有存钱罐的经历,父母亲人如果给钱都会往自己的
分类:
编程语言 时间:
2020-12-08 12:36:31
阅读次数:
8
参考: https://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html https://www.cnblogs.com/dmego/p/5965835.html 五大常用算法之一:分治算法 分治算法 一、基本概念 在计算机科学中, ...
分类:
编程语言 时间:
2020-11-08 17:21:32
阅读次数:
25
1. 深度优先遍历 使用场景:常见于各种组合,树遍历,前序遍历、中序遍历、后续遍历 private void dfs(int[] arr, int target,int begin, Deque<Integer> path, Set<List<Integer>> res) { if ( path.s ...
分类:
编程语言 时间:
2020-10-26 10:56:27
阅读次数:
26
动态规划 讲解动态规划的资料很多,官方的定义是指把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解。概念中的各阶段之间的关系,其实指的就是状态转移方程。 我们一般看到的状态转移方程,基本长成下面这样(注:i、j、k 都是在定义DP方程中用到的参数。opt 指代特殊的计算逻辑,大多数情 ...
分类:
编程语言 时间:
2020-08-25 16:04:26
阅读次数:
48
一 排序算法的分类 二 时间复杂度和空间复杂度 1.时间复杂度 1.1 时间复杂度的计算方式 1).用常数1代替运行时间中所有的加法常数 2)修改后的运行次数函数中,只保留最高阶项 3)去除最高阶项的系数 1.2 常用算法的时间复杂度 这个需要牢记 2.空间复杂度 空间复杂度是一个算法在运行时临时占 ...
分类:
编程语言 时间:
2020-07-26 01:05:36
阅读次数:
76
递推算法 通过已知条件,利用特定关系得到中间推论,直至得到结果;(分顺推,逆推) ps:斐波那契数列,1 1 2 3 5 8 13 。。。得到第n位数; 规律:首位1,二位1,三位开始前两数和; function feibo($n) { if($n == 1 || $n == 2) return 1 ...
分类:
编程语言 时间:
2020-07-22 01:33:55
阅读次数:
95
简述一些常用算法,并用代码实现它。 注:动图是在网上找的。 (1)冒泡排序 核心思想:交换序列中相邻两个整数。 测试代码: 1 void bubble_sort(void) 2 { 3 /* 4 * 冒泡排序:以降序为例进行说明 5 * 比较相邻的元素,将值最小的元素交换到右边。 6 */ 7 in ...
分类:
编程语言 时间:
2020-06-30 00:30:44
阅读次数:
69