算法
文章平均质量分 50
taotaoahui
这个作者很懒,什么都没留下…
展开
-
快速幂 教程
对于an,若n为奇数,a^(n-1)*a; 若n为偶数,a^(n/2)*a^(n/2) ; 若n为0, 1。/*快速幂对于an,若n为奇数,a^(n-1)*a; 若n为偶数,a^(n/2)*a^(n/2) ; 若n为0, 1。 */#include<iostream> using namespace std;int x, p, m, i,result;int main() { int x,n;...原创 2022-04-07 08:28:32 · 310 阅读 · 0 评论 -
PageRank 笔记
转载自:https://blog.csdn.net/weixin_43378396/article/details/90322422PageRank要说到 PageRank 算法的来源,这个要从搜索引擎的发展讲起。最早的搜索引擎采用的是分类目录的方法,即通过人工进行网页分类并整理出高质量的网站。那时 Yahoo 和国内的 hao123 就是使用这种方法。后来网页越来越多,人工分类已经不现实了。搜索引擎进入了文本检索的时代,即计算用户查询关键词与网页内容的相关程度来返回搜索结果。这种方法突破了数转载 2020-06-24 16:06:39 · 414 阅读 · 0 评论 -
方差、标准差、相关系数
方差是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。在统计描述中,方差用来计算每一个变量(观察值)与总体均数之间的差异。为避免出现离均差总和为零,离均差平方和受样本含量的影响,统计学采用平均离均差平方和来描述变量的变异程度。总体方差计算公式:方差是实际值与期望值之差平方的平均值,而标.转载 2020-06-21 08:43:28 · 4330 阅读 · 0 评论 -
字符串全排列
http://blog.163.com/yunfei_lei@126/blog/static/140864561201181694915129//* 设R={r1,r2,...,rn}是要进行排列的n个元素,Ri=R-{ri}. Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列。 (1)当n=1时,Perm(R)=(r),其中r是集合R中唯一的元素;转载 2016-09-22 15:07:36 · 294 阅读 · 0 评论 -
经典排序算法目录
选择排序原创 2016-04-21 11:54:46 · 559 阅读 · 1 评论 -
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个 子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。/* 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个原创 2016-09-08 14:59:55 · 5524 阅读 · 0 评论 -
给一个正整数 n, 找到若干个完全平方数(比如1, 4, 9, ... )使得他们的和等于 n。你需要让平方数的个数最少。
给出 n = 12, 返回 3 因为 12 = 4 + 4+ 4。给出 n = 13, 返回 2 因为 13 = 4 + 9。/**思路:*1设置n的副本为t*2.先求出平方数小于t的最大整数数maxSqrt*3.将maxSqrt*maxSqrt放到二维数组arr[i],且t-=maxSqrt*maxSqrt*4.反复进行2~3,直到t为0*5.设置i+=1*6.反复进行1~原创 2016-09-08 10:51:58 · 6861 阅读 · 0 评论 -
将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转。
将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转。示例:交换前链表的顺序 交换后链表的顺序4→5→7→1→6 ==> 1→7→5→6→4 1 ==> 1 (链表仅含一个元素)2→1 ==> 1→2原创 2016-09-08 10:50:30 · 1291 阅读 · 0 评论 -
算法的时间复杂度取决于:
算法的时间复杂度取决于:待处理数据的状态问题的规章原创 2016-04-13 16:32:40 · 39927 阅读 · 1 评论 -
一座楼有10层,兔子可以跳跃的层数可以为1,2或者3,那么兔子到达10层有多少种跳法并列出各种情况。
斐波那契数列/*一座楼有10层,兔子可以跳跃的层数可以为1,2或者3,那么兔子到达10层有多少种跳法并列出各种情况。*/#include#includeusing namespace std;int Fun(int n){if(n == 1)return 1;if(n == 2)return 2;if(n == 3)retur原创 2016-09-19 14:26:04 · 626 阅读 · 0 评论 -
二叉树的镜像
http://blog.csdn.net/yuzhongchun/article/details/39697729题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。二叉树结点的定义如下:[cpp] view plain copy print?struct BinaryTreeNode { int转载 2016-09-18 10:41:52 · 321 阅读 · 0 评论 -
eg:输入1 6 5 其中6是偶数,二进制表示为110,反转后为011,代表3,所以最终输出1 3 5.
今天的计算机课上,老师给同学们出了一道题:输入n个数,请将其中的偶数的二进制反转。eg:输入1 6 5其中6是偶数,二进制表示为110,反转后为011,代表3,所以最终输出1 3 5.小贱君最近脑子不怎么好使,想了半天也没想出来如何做,最后他向你寻求帮助了,帮帮可怜的小贱君吧!#include using namespace std;int flipNum(int转载 2016-08-11 21:27:14 · 966 阅读 · 0 评论 -
后缀表达式的求值的算法
1 后缀表达式的求值将中缀表达式转换成等价的后缀表达式后,求值时,不需要再考虑运算符的优先级,只需从左到右扫描一遍后缀表达式即可。具体求值步骤为:从左到右扫描后缀表 达式,遇到运算符就把表达式中该运算符前面两个操作数取出并运算,然后把结果带回后缀表达式;继续扫描直到后缀表达式最后一个表达式。 例如,后缀表达式(abc*+def*/-) 的求值2 后缀表达式的求值的算法设置一个栈,开转载 2016-09-18 21:19:48 · 742 阅读 · 0 评论 -
算法(2)线性表
线性表的数据对象集合为{a1, a2,..., an},每个元素的类型均为DataType。其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每一个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的关系。•OperationInitList(*L):初始化操作,建立一个空的线性表L。ListEmpty(L):判断线性表是否为空表,若线转载 2016-09-05 17:10:14 · 300 阅读 · 0 评论 -
算法(1)时间复杂度 和 空间复杂度
•算法时间复杂度的定义:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。•好长好长,没想到定义这个概念转载 2016-08-11 08:34:55 · 624 阅读 · 0 评论 -
统计回文
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。例如:A = “aba”原创 2016-09-17 14:54:32 · 396 阅读 · 0 评论 -
单链表的建立、测长和打印
/* 单链表的建立、测长和打印*/#include#includeusing namespace std;typedef struct student{ int data; struct student *next;}Node;// 创建Node *Creat(){ Node *head = (Node*)malloc(sizeof(Node)); int cy转载 2016-09-22 16:13:50 · 326 阅读 · 0 评论 -
输入一个正整数n,求第n小的质数
#include#includeusing namespace std;//void main(){ //char str[100]; //int n; //char temp = getchar(); //while(temp) //{ // //} long n; cin>>n; bool flag = false; int count = 0; i原创 2016-09-26 09:34:02 · 17963 阅读 · 1 评论 -
判断单链表是否存在环,判断两个链表是否相交问题详解
一、判断链表是否存在环设置两个指针(fast, slow),初始值都指向头结点,命slow每次前进一步,fast每次前进二步,若链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。否则fast先从头到尾为null,则无环链表。bool isExitsLoop(Node *head){ Node *slow = head, *fast = head; while(原创 2016-10-08 11:15:54 · 357 阅读 · 0 评论 -
有向图的拓扑排序——基于邻接矩阵
http://blog.csdn.net/jinzhao1993/article/details/517784681. 拓扑排序的概念定义:将有向图中的顶点以线性方式进行排序。即对于任何连接自顶点u到顶点v的有向边u->v,在最后的排序结果中,顶点u总是在顶点v的前面。考虑一个非常非常经典的例子——选课。假设我非常想学习一门机器学习的课程,但是在修这转载 2016-10-06 21:46:48 · 5084 阅读 · 0 评论 -
稳定排序和不稳定排序
http://www.cnblogs.com/codingmylife/archive/2012/10/21/2732980.html 这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针转载 2016-10-06 21:43:10 · 648 阅读 · 0 评论 -
把链表中的奇偶数分开
http://blog.csdn.net/jiyanfeng1/article/details/8607889Segregate even and odd nodes in a Linked List给你一个单链表,修改此单链表,使得前面是偶数,后面是奇数。偶数间的相对顺序不变,奇数间的相对顺序不变。返回修改后的单链表的头节点。例如:Input: 1转载 2016-10-06 10:13:16 · 989 阅读 · 0 评论 -
求解最大连续子数组的算法
/* 求解最大连续子数组的算法 */#includeusing namespace std;void Fun(int temp[]){ int len = sizeof(temp) / sizeof(int); int maxSum = temp[0]; // /记录最大子数组的和 int low = 0; //记录最大子数组的底 int high = 0; // 记转载 2016-10-01 11:39:03 · 311 阅读 · 0 评论 -
不申请新的空间,字符串反转
// 申请了 一个变量保存串的长度 ,一般面试这个程序就可以了,能写出这个其实已经很牛 b 了,整上面那个, 估计别人开始怀疑是以前做过这个题目了,呵呵,还得装傻点/* 图示过程:字符串 abcdefS+1 = Str = abcdef’/0’ abcdef’/0’ > fbcdea’/0’ > fbcde’/0’aS+1 = Str = bcde’/0 fbcde’/0’a >转载 2016-10-01 10:47:27 · 949 阅读 · 0 评论 -
要求:不申请变量和空间 反转字符串 ,用一个函数实现。 异或^交换或者加减交换的典型应用! VIA 笔试题
要求:不申请变量和空间 反转字符串 ,用一个函数实现。 异或^交换或者加减交换的典型应用! VIA 笔试题基本思路:从 两头往中间做字符交换 。字符串最后一个字符是 '/0' ,表示结束,没有实际意义,可以将它 当作中间变量 ,等处理完成后,再将最后一个字符置 '/0' 即可// 申请了 一个变量保存串的长度 ,一般面试这个程序就可以了,能写出这个其实已经很牛 b 了,整上原创 2016-09-30 21:59:57 · 399 阅读 · 0 评论 -
完全二叉树与满二叉树 霍夫曼树
http://blog.csdn.net/yelbosh/article/details/8043476其实满二叉树是完全二叉树的特例,因为满二叉树已经满了,而完全并不代表满。所以形态你也应该想象出来了吧,满指的是出了叶子节点外每个节点都有两个孩子,而完全的含义则是最后一层没有满,并没有满。满二叉树(Full Binary Tree):除最后一层无任何子节点外,每一层上的所有结点都转载 2016-09-28 09:34:44 · 1111 阅读 · 0 评论 -
二叉排序树 插入,创建,中序遍历,最大,最小值,层级,打印,删除,搜索
排序二叉树的性质如下:若他的左子树不空,则左子树上所有的结点均小于它的根结点的值。若他的右子树不空,则右子树上所有的结点均大于它的根结点的值。他的左右子树也是排序二叉树。#includeusing namespace std;struct Node{ int data; Node *lchild; Node *rchild;};Node *Tr原创 2016-09-14 15:13:26 · 894 阅读 · 0 评论 -
C++输入日期判断是星期几
http://blog.csdn.net/hans_1990/article/details/26486613通过日期判断是星期几可以通过基姆拉尔森计算公式算出。 算法如下:基姆拉尔森计算公式W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7在公式中d表示日期中的日数,m表示月份数,y表示年数。注转载 2016-09-27 16:04:14 · 18751 阅读 · 1 评论 -
求数组中的最大偶数(递归解法)
参考大神的算法int MaxEven(int arr[], int n){ int max; if(n == 0) { if(arr[0] % 2 == 0) return arr[0]; else return -1; } else { max = MaxEven(arr, n - 1); if( max < arr[n -原创 2016-09-27 12:35:13 · 5619 阅读 · 0 评论 -
// 对于一个数组返回第二大数
// 对于一个数组返回第二大数int GetSecondMax(int arr[]){ int max = arr[0], secondMax = arr[0]; for(int i = 0; i < sizeof(arr); i++) { if(arr[i] > secondMax) { secondMax = arr[i]; if(secondMax > max原创 2016-09-26 16:51:26 · 421 阅读 · 0 评论 -
面试题:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。
#include#includeusing namespace std;char *Fun(char temp[]){ int len = strlen(temp); //cout<<len<<endl; for(int i = 0, j = len - 1; i <= j; i++, j--) { char temp1 = temp[j]; temp[j] = temp原创 2016-09-26 10:23:51 · 4949 阅读 · 2 评论 -
c++ 二叉树的构建 前序遍历 中序遍历 后续遍历 层次遍历
#include #include#includeusing namespace std; // 定义二叉链表节点类型templatestruct Node{ T data; Node *lchild; Node *rchild;};// 二叉树链表类templateclass Binary_Tree{private: Node *BT; // 二叉链表原创 2016-09-14 07:58:59 · 1381 阅读 · 0 评论 -
有1,2,....一直到n的无序数组,求排序算法,要求时间复杂度为O(n),空间复杂度O(1)
http://blog.csdn.net/dazhong159/article/details/79215271、有1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),使用交换,而且一次只能交换两个数。#include void sort(int *a,int len) { int temp; for(转载 2016-09-11 18:06:17 · 2134 阅读 · 0 评论 -
A *a=new B();
#includeusing namespace std;class A{ public: ~A(){ cout<<111<<endl; } virtual void Fun() { cout<<"A"<<endl; }};class B:public A{ public: ~B(原创 2016-09-11 15:36:04 · 760 阅读 · 0 评论 -
白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
http://blog.csdn.net/morewindows/article/details/6671824直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接播放排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。 设数组为a[0…n-1]。1. 初始时,数转载 2016-04-19 10:02:53 · 291 阅读 · 0 评论 -
编写一个程序,将小于n的所有质数找出来。
c#实现如下:http://www.nowcoder.com/profile/454285/test/3057105/36326#summaryusing System;using System.Collections.Generic;namespace ceshi{ class taotao { static List array = new List原创 2016-04-18 09:49:42 · 3155 阅读 · 0 评论 -
五大常用算法系列介绍之五:分支限界法
http://www.php100.com/html/it/biancheng/2015/0206/8567.html、基本描述类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使转载 2016-04-17 20:22:56 · 390 阅读 · 0 评论 -
五大常用算法系列介绍之四:回溯算法
http://www.php100.com/html/it/biancheng/2015/0205/8558.html1、概念回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,转载 2016-04-17 20:22:11 · 405 阅读 · 0 评论 -
五大常用算法系列介绍之三:贪心算法
http://www.php100.com/html/it/biancheng/2015/0204/8545.html一、基本概念:所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题转载 2016-04-17 20:21:21 · 420 阅读 · 0 评论 -
五大常用算法系列介绍之二:动态规划算法
http://www.php100.com/html/it/biancheng/2015/0203/8531.html一、基本概念动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。此系列文章包括:《五大常用算法系列介绍之一:分治算法》《五大常转载 2016-04-17 20:20:28 · 420 阅读 · 0 评论