摘要:
关系数据库结构及形式化定义 关系 域:是一组具有相同关系数据类型的值的集合 笛卡尔积:域上的一种集合运算 元组:笛卡尔积中每一个元素$(d_1,d_2,d_3\cdots ,d_n)$称之为一个$n$元组 分量:笛卡尔积元素$d_1,d_2,d_3 \cdots,d_n$中的一个值$d_i$称之为一 阅读全文
摘要:
数据库的4个基本概念 数据(data) 数据是数据库中存储的基本对象,若想给数据下一个定义:描述事物的符号记录称之为数据。例如文本,图像,音频,视频等都可以是数据。 数据的表现形式还不能完全表达其内容,需要经过解释,数据和关于数据的解释是不可分割的。数据的解释是指对数据含义的说明,数据的含义称为数据 阅读全文
摘要:
素数 素数又称之为质数,若一个数只能被1和本身整除,没有其余的约数,这我们称这个数是素数,反之,这个数是合数;而且1既不是素数也不是合数。 素数的判定 朴素算法 bool isprime(int n){//单个数判断 for(int i = 2; i < n; i++){ if(n % i == 阅读全文
摘要:
位运算 位运算是基于整数的二进制的运算。计算机内部是以二进制进行存储数据,所以位运算是相当快的。 常见的位运算符有:与(&)、或(|)、异或(^)、取反(~)、左移(<<)、右移(>>)。 | 描述 | 符号 | 运算法则 | | | | | | 与 | & | 只有两个对应位都是1时,结果才为 阅读全文
摘要:
什么是栈 栈(Stack)又称为堆栈,是一种受限制的线性表只允许从一端插入和删除数据。因为栈的插入和删除只能在栈顶进行,所以每次删除的元素都是栈中的最后一个元素,故栈的特征是先进后出。 当我们了解了栈是定义和性质之后,我们就可以自己手写一个栈,我们可以用定义长度为$N$的数组$S$来表示,用一个 阅读全文
摘要:
快速幂 一般而言,在计算$a^n$时,我们会使用暴力的方法,逐个去乘,这样操作时间复杂度是$O(n)$。 而是用快速幂算法时间复杂度可以降到$O(logn)$。 递归思想 在计算$an$时,我们可以先计算$a2$,然后在计算$(a^2)^2$,一直计算到$n$次幂。 例如$3^9$,可以这样递归: 阅读全文
摘要:
[字典树](Trie Tree) 是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串)。 它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 ——百度百科 字典树的时间复杂度和空间复杂度: 1、时间复杂度 阅读全文
摘要:
取模运算 概念:模运算是指取模运算,即求**$a\div b$的余数**。 取模运算与基本四则运算相似,但是除法运算除外,满足以下性质: \((a + b)\) % \(p = ((a\) % \(p ) + ( b\) % \(p))\) % \(p\) \((a - b)\) % \(p = ( 阅读全文
摘要:
【前缀和】 前缀和是一个数组在某个下标之前的所有数组元素之和(包括此元素)。 接下来b[]为前缀和数组,arr[]为原数组 一维前缀和 定义式:$b[i] =\sum_^a[j]$; 递推公式:\(b[0]=0; b[i] = b[i-1]+a[i]\); 初始化O(n): for(int i = 阅读全文
摘要:
介绍扩展欧几里得算法之前,我们先介绍贝祖定理,即对任意整数a,b,那么一定存在整数x,y,使得$ax+by=gcd(a,b)$ 使用欧几里得算法(辗转相除法)我们可知:当到达递归边界时有$b=0,a=gcd(a,b)$,我们可以得到一个式子$a·1+b·0=gcd(a,b),x=1,y=0$,注意这 阅读全文