【算法学习三阶段】教程文章相关的互联网学习教程文章

MySQLNested-LoopJoin算法学习_MySQL

不知不觉的玩了两年多的MySQL,发现很多人都说MySQL对比Oracle来说,优化器做的比较差,其实某种程度上来说确实是这样,但是毕竟MySQL才到5.7版本,Oracle都已经发展到12c了,今天我就看了看MySQL的连接算法,嗯,现在来说还是不支持Hash Join,只有Nested-Loop Join,那今天就总结一下我学习的心得吧。 Nested-Loop Join基本算法实现,伪代码是这样:for each row in t1 matching range {for each row in t2 matching reference k...

算法学习2:快速选择【代码】

快速选择 1 基本思想2 代码 本文是在听过AcWing算法基础课程之后留下自用的笔记,如有侵权会删除。感觉AcWing的课还是蛮好的,课程地址如下:https://www.acwing.com/activity/content/introduction/11/ 知识点对应的题目为:https://www.acwing.com/problem/content/788/ 1 基本思想 快速选择算是快速排序的一种排序吧,感觉差不多,快速排序的方法为: 找到分界点x:q[L], q[(L+R)/2], q[R]调整元素顺序,使左边所有数Left <= x,...

基础算法学习--堆的模拟【代码】

什么是堆?一颗完全二叉树,根是整棵树的最小值 每一层的子节点都大于对应根节点堆的模板(不考虑数是第几个插入的) int h[N]; //value int idx; //树的大小 //将当前的数向下排序 void down(int num){int t = num;if(num * 2 <= idx && h[num * 2 ] < h[t]) t = num * 2;if(num * 2 + 1 <= idx && h[num * 2 + 1] < h[t]) t = num * 2 + 1;if(t != num){swap(h[t],h[num]);down(t);} } //将当前的数向上排序 void up(int num...

【算法学习笔记】筛法(算法翻译类)【代码】

本节部分内容译自博文 Решето Эратосфена 与其英文翻译版 Sieve of Eratosthenes。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。素数筛法 如果我们想要知道小于等于 \(n\) 有多少个素数呢? 一个自然的想法是对于小于等于 \(n\) 的每个数进行一次质数检验。这种暴力的做法显然不能达到最优复杂度。 埃拉托斯特尼筛法 考虑这样一件事情:如果 \(x\) 是合数,那么 \(x\) 的倍...

【算法学习笔记】生成树问题探究【代码】

本文探究了生成树问题的相关知识。 写在前面 生成树问题是图论的重点,其中最小生成树更是最基础的入门问题。 Murabito 将会在这里记录他有关生成树的理解。此类问题众多,本文将不断更新。 问题介绍 给定一个 \(n\) 个顶点, \(m\) 条边的无向图。要求你从中选择 \(n?1\) 条边,构成一个具有特殊性质的树。 ACM 中常见的生成树包括:最大/小生成树 次大/小生成树 生成树计数解法介绍 最大/小生成树 以最小生成树 Minimum Spanning...

蓝桥杯算法学习(2)【代码】

文章目录 02 查找与排序(上)1 递归、查找与排序补充1 递归2 查找3 排序1 冒泡排序2 选择排序3 插入排序4 希尔排序2 如何评估算法性能1思考2常见函数的复杂度计算3 排序算法的稳定性 3相关题解题1:小白上楼梯(递归设计)题2:旋转数组的最小数字(改造二分法)题3 :在有空字符串的有序字符串数组中查找题4 :最长连续递增子序列(部分有序)题5:快速设计一个高效的求a的n次幂的算法02 查找与排序(上) 1 递归、查找与排序补充 1 递归 ...

数据机构与算法学习(八)- 排序

一、如何分析一个“排序算法” 排序算法的执行效率 1. 最好情况、最坏情况、平均情况时间复杂度 第一,有些排序算法会区分,为了好对比做一下区分。第二,对于要排序的数据,有的接近有序有的接近无序。有序度不同的数据对于排序的执行时间肯定是有影响的,我们要知道在不同的数据下的性能表现。 2. 时间复杂度的系数、常数、低阶 时间复杂度是一个增长趋势,它在表示的时候会忽略系数、常数、低阶。但是在实际的开发中需要考虑。 ...

KMP算法学习【代码】【图】

在百度词条里找到了这个,感觉还是不是很好理解。 我们知道KMP是在BF算法上面改进而来的,BF通过一遍遍的对比,算法复杂度最大为(n*m)最小为(m+n),而KMP可以直接把算法复杂度控制在(m+n)。 同样是对比,KMP优势就在于不是一个个去对比,而是在对比之后能够直接跳转到对应的跳转位置。 假如我们现在需要的主数组a为:abababababca (i控制)而子数组为b:abababca (j控制),在第一次对比不符合时,KMP可以选择i跳到第四个出...

用户头像 成长的皮球 数据机构与算法学习(八)- 递归【代码】

递归需要满足三个条件 1. 一个问题的解可以分解为几个子问题的解 2. 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一致。 3. 存在递归终止条件 如何编写递归代码 最关键的是写出递推公式,找到终止条件,剩下将递推公式转化为代码 假如有n个台阶,每次可以跨1个台阶或者2个台阶,请问走这n个台阶有哦多少种走法? n个台阶的走法就等于先走1台阶后,n-1个台阶的走法加上先走2台阶后,n-2个台阶的走法,用公式表示:f...

[算法学习no14]进制哈希BKDR Hash

进制哈希,就是让长度为n的字符进行下列运算: for(int i=1;i<=n;i++) { ans=(ans*k)+a[i]; } 当然这是初始版 如果溢出,那么计算机会自动舍弃高位的值,留下低进制位的数字 让我们现在考虑该如何选取k 如果是偶数,那么最终会因为溢出而导致高位运算无法参与 而如果是奇数,那么即使溢出,高位字符也会因为奇数不是2的整数倍,会留下1,从而在低位产生影响 所以 1.k为奇数 下面我们在看看k应该选取怎么样的奇数 为了自动取位,我们...

算法学习——求有重复元素的全排列(递归)【代码】

算法学习——求有重复元素的全排列(递归) 思路:看到这个题目首先能想到的一点就是:①我们要求元素的所有全排列②我们要对求出的全排列去重 第一步:求全排列,这里先讨论对不含重复元素的数组元素进行全排列,用递归方法怎么实现叻 思考这样一种方法:假如我们要求1,2,3,4的全排列,我们可以把1放到前面来,求2,3,4的全排列,之后把2放到前面,求1,3,4的全排列,之后把3放到前面,求1,2,4的全排列,然后把4放到前面来...

基础算法学习--离散化【代码】

离散化的概念 题目给出范围很大但数据数量很少的一组数据,通过离散化将大的下标的值赋值给新的较小的连续的下标,从而讲一个范围很大的数据合集装进一个小的容器中。离散化模板 vecrot<int> alls; // 储存所有待离散化的值sort(alls.begin(),alls.end()); // 将alls里的所有待离散化的值总小到大排序alls.erase(unique(alls.begin(),alls.end()),alls.end()) // 将重复的待离散化数据删除//因为离散化是下标对下标的映射,不需要重...

数据结构与算法学习之单向环形链表和Josephu(约瑟夫问题)【代码】【图】

单向环形链表和Josephu(约瑟夫问题) 单向环形链表应用场景 Josephu(约瑟夫、约瑟夫环) 问题单向环形链表介绍 单向环形链表中的节点包含数据域和next指针域,而且最后一个节点的next指针域指向头节点。Josephu问题 约瑟夫问题的示意图Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止...

Java算法学习11——快速幂与矩阵快速幂【代码】【图】

一、快速幂 1.介绍详情 https://blog.csdn.net/qq_19782019/article/details/85621386 2.快速幂模板 (1) 简单模板,便于理解 long long fastPower(long long base, long long power) {long long result = 1;while (power > 0) {if (power % 2 == 0) {//如果指数为偶数power = power / 2;//把指数缩小为一半base = base * base % 1000;//底数变大成原来的平方} else {//如果指数为奇数power = power - 1;//把指数减去1,使其变成一个...

《算法图解》读书笔记-1 用python敲开算法的大门! 从0.1开始的数据结构与算法学习之路【图】

文章目录 写在前面本书学习路线打好基础应用更加广泛的算法的介绍 阅读计划!! 写在前面 为啥说是从0.1开始呢—— 目前基本情况: 大二上学期学习过数据结构与算法 但是基础打得较薄弱,且手撸算法能力极弱,恰巧这学期需要使用python进行科研方向的学习,所以选用了这本基于python的算法书《算法图解》。 为了更扎实地对数据结构与算法进行学习 给之后在LeetCode上面刷题打一个好基础 开刷~ 从今天开始尽量日更笔记吧~然后频繁地...