![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
小算法
Immorwave
这个作者很懒,什么都没留下…
展开
-
N个正整数随机排列
这次我们要生成前N个正整数的一个随机排列书中给出三种算法如下:前提:需要一个随机数生成函数randInt(begin,end),生成从begin 到 end 的随机数算法一: 依次填入a[0]到a[n-1]的数组a,每次都不断调用随机数函数,直到生成的随机不同于已经生成的a[0],a[1],...a[i-1],然原创 2017-08-10 12:22:49 · 2560 阅读 · 0 评论 -
最大公因数(gcd)
对于最大公因数(gcd),书中给出两种算法,欧几里得算法和不断递归调用的求解方法:欧几里得算法,其实现原理就是辗转相除法,证明略,实现如下://m>=nint gcd(int m,int n){ while(n!=0){ int rem = m % n; m = n; n = rem; } return m;原创 2017-08-10 12:52:48 · 1192 阅读 · 0 评论 -
折半查找零点
本是书后习题 ,难度不大,但在实现时对于语法有值得借鉴的地方,就记录下来:题目:对某个任意的函数f找出方程f(X)=0的一个解,该函数连续的并有两个点low、high使得f(low)和f(high)符号相反,那么在low和high之间即存在一个零点;需要注意的如下:——满足给定的low、high使得f(low)*f(high)——用一个函数作为参数传递我们需要不原创 2017-08-10 15:51:59 · 342 阅读 · 0 评论 -
素数
关于素数已经是老生常谈,但对于新手的我来说就是新的体验,可能所写不及大牛的十万分之一素数(质数):除了1和它本身以外不再有其他因数,这样的数称为素数。先来素数的判断:(时间复杂度是O(√N),书中说这个是最坏的... )//判断一个数是否是素数void primeNumber(int n){ if (n <= 1) { cout << "no" << endl原创 2017-08-10 16:26:38 · 520 阅读 · 0 评论 -
求幂
对于求幂,文中给了递归算法,后面题中让给出非递归算法;其实实质就是:——基本情况 n==0,返回1;——如果幂为偶数,那么可以由pow(x,2)得来;——如果幂为奇数,那么可以由pow(x,2)*x得来。递归方法:非常直观,但要注意不要追求那些没用的花哨,刻意的变形还导致了无限循环//递归求幂//O(logN)int pow(int x, int n){ i原创 2017-08-10 17:24:09 · 350 阅读 · 0 评论