![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法笔记
文章平均质量分 66
柒熠染云
兴趣使然的计算机爱好者,还是个小白
展开
-
《算法笔记》4.1.2 节 —— 插入排序
《算法笔记》4.1.2 节 —— 插入排序 插入排序是最简单的一类排序方法,也是笔者在学习《算法笔记》的过程中,第一个感觉需要细心研究的排序方法 相比于选择排序和冒泡排序来讲,选择排序对数组操作的要求上升了一个等级,个人认为对入门算法有很好的启蒙作用。 原理阐释: 我们先避开概念不谈,直接来看一个实例: 这里有一个顺序混乱的整型数组 {5,2,4,6,3,1}\{5,2,4,6,3,1\}{5,2,4,6,3,1} 我们将按照插入排序的方法对其进行排序 我们假设前面的单个数字 5 是有序的后面的数字皆原创 2021-04-04 15:08:15 · 73 阅读 · 0 评论 -
《算法笔记》 5.4.2 节 —— 素数表的获取
《算法笔记》 5.4.2 节 —— 素数表的获取 一般方法的分析: 根据一般的判断素数方法,我们已经可以从 111 ~ nnn 中打印素数表,即从111 ~ nnn 进行枚举,判断每个数 是否为素数,如果是素数就加入素数表,这种方法的时间复杂度是 O(n)O(n)O(n) 而判断素数的时间复杂度为 O(n)O(\sqrt{n})O(n) ,因此总时间复杂度为 O(nn)O(n\sqrt{n})O(nn) 这个复杂度对于 n 不超过 10510^5105的大小是没有问题的。 例(求解100以内所有的素数)原创 2021-04-03 22:16:23 · 133 阅读 · 0 评论 -
《算法笔记》 5.4.1 节——素数的判断
《算法笔记》 5.4.1 节——素数的判断 素数的定义: 素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 我们可以理解为一个整数 n 需要被判定为素数,需要判断 n 能否被 2,3⋯(n−1)2,3\cdots (n-1)2,3⋯(n−1)中的一个整除。 都不能整除的数即可判定为素数。 但这种方法的时间复杂度为 O(n)O(n)O(n),在许多题目中,判断素数只是题目的一部分,如此的时间复杂度 实际上对程序可通过性影响很大,需要更加快速的判定方法。 改进: 我们假设在原创 2021-04-01 16:23:24 · 187 阅读 · 3 评论 -
《算法笔记》4.5.3 节——快速幂
《算法笔记》4.5.3 节——快速幂 首先由一个问题引出: 给定三个正整数a,b,m(a < 10910^9109,b < 10610^6106,1< m < 10910^9109),求aba^bab%m: long long a, b, m; long long ans = 1; for (int i = 0; i < b; ++i) { ans = ans * a % m; } return ans; 这种最简单的写法时间复杂度为O(b) 但如果对于(a < 10原创 2021-03-31 15:54:52 · 102 阅读 · 0 评论 -
《算法笔记》3.5节——进制转换
《算法笔记》3.5节——进制转换 对于一个P进制数x如果要转换为Q进制,需要分为两步: ① 将 P 进制数 x 转换为十进制数 y 对于一个十进制的数 y = d1d2⋯dnd_1d_2\cdots d_nd1d2⋯dn,它可以写成: y = d1∗d_1\astd1∗10n−110^{n-1}10n−1 +++ d2∗d_2\astd2∗10n−210^{n-2}10n−2+++ ⋯\cdots⋯ +++dn−1∗d_{n-1}\astdn−1∗101010 +++ dnd_ndn 同样的,原创 2021-03-31 09:27:44 · 102 阅读 · 0 评论