- 博客(9)
- 资源 (4)
- 收藏
- 关注
原创 随机置乱算法
【正解】高纳德置乱算法(Knuth-Fisher-Yates algorithm)准确性:这个算法是无偏的,即每个排列都是等可能的效率:时间复杂度Θ(n),无需额外空间(基于交换元素)伪代码:int a[n]for i from n-1 to 1 get a random_integer j (0≤j≤i) swap a[i] with a[j]end以下是C++实现方法:①使用STL...
2018-02-22 13:24:42 3820
原创 分治法实例:斐波那契数列
我们都十分熟悉斐波那契数列的定义:Fn = Fn-1 + Fn-2,其中F0 = 0、F1 = 1。那么我们如何求解斐波那契数列的某个特定项呢?方法一:递归求解。这种方法看似简单,可是实际上我们会重复计算许多已经计算过的项,最后递归树竟然是一棵完全二叉树,时间复杂度达到了Θ(φ^n),其中φ = (sqrt(5)+1)/2。我们不再讨论此方案。方法二:递推求解。即利用Fn的定义式,以线性的复杂度O...
2018-02-16 21:20:23 6096 2
原创 分治法实例:快速幂
快速幂:即快速求幂a^b,这里提供两种实现方法:①位运算非递归实现法即将幂次b写成二进制的形式(事实上,计算机中就是以二进制保存数字的),若b的某个二进制位为1,res乘上当前的base,同时base变成base²;若为0,则仅仅base变为base²。②递归实现法这种方法貌似更好理解一些,若b为偶数,则a^b = [a^(b/2)]^2;若b为偶数,则a^b = a * [a^(b/2)]^2。...
2018-02-16 20:59:43 978
原创 分治法实例:折半查找
折半查找法:对于一个有序的数列,折半查找一个元素的位置;效率:O(lgn);代码说明:①如果未找到元素a.若比所有元素小, 返回位置0b.比所有元素大,返回最后一个位置c.介于所有元素之间,返回比其大的紧邻元素的位置;#include <iostream>using namespace std;int a[8] = {1,2,3,5,6,7,8,9};int binaryFi...
2018-02-16 20:49:18 1014
原创 最大子数组问题的三种解法
最大子数组问题:在一个数列当中寻找一个子数列,使得这个子数列的元素之和最大。为了使代码简单化,在这里我们只求出最大值。①暴力搜索,即在C(n,2)种可能的方法中寻找符合题意得一种,显然时间复杂度为θ(n²);#include <iostream>#include <climits>using namespace std;int a[16] = {13,-3,-25,...
2018-02-16 20:40:39 7185 2
原创 《算法导论》第4章:递归分析
本章共介绍了3种方法来求解递归式的时间复杂度。方法一:代换法(猜测+证明)即猜出Tn的复杂度后,代入原来的式子进行检验。如:Tn = 2T(n/2)+n 中:①猜测Tn = O(n*lgn),即Tn≤c*n*lgn;②然后证明2T(n/2)+n≤c*nlgn即可,其中T(n/2)=c*(n/2)*lg(n/2)。方法二:递归树按式子迭代出一棵树之后,将每一层的和累...
2018-02-15 22:51:57 1025
原创 《算法导论》第3章:函数的增长
这章主要展现了一些基本函数的知识,引入了渐进记号的概念。一些陌生的知识点:①lg* x:就是“劳格”i次得到一个小于等于1的数;②Stiring公式:n! ≈ sqrt(2πn)*(n/e)^nn! = o(n^n),n! = w(2^n),lg(n!) = θ(lg(n^n));③斐波那契数列的Fi为Φ^i/sqrt(5)舍入到最近的整数,其中Φ为x²-x-1=0的正根;④取整函数的有关性质(p...
2018-02-11 22:07:35 301
原创 《算法导论》第2章:算法基础
学习内容:①算法(尤其是递归算法)复杂度的计算方法②证明算法正确性的三个步骤 //虽然我没有怎么弄清楚③几个排序算法的实现与比较代码:插入排序:#include <iostream>using namespace std;int a[6] = {4,3,6,1,2,5};int main(){ int i,j,key; for(j=1; j<...
2018-02-09 19:44:09 228
原创 C++二维数组sort排序问题
以往遇到行排列问题(按每行的字典序排序)的时候,总是使用结构体来进行排序,但是如何使用二维数组来达到同样的效果呢?实验内容:利用二维数组进行“三级排序”测试1:使用c++内置的普通型二维数组#include <algorithm>#include <iostream>using namespace std;bool cmp(int a[], int b[]){ ...
2018-02-08 20:08:16 75513 8
AVS3核心码流结构解析
2021-01-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人