首先一点就是无视任何常量 从最简单的开始 statement; 这段时间复杂度为常数1,所以O(1). 然后 ; i < N; i++ ) statement; 这一段是线性的,则时间复杂度为N,所以O(N),就算运行多次,比如4次5次,5N依然看做O(N). 但是 ; i < N; i++ ) { ; j < N; j++ ) statement; } 这一段则是二次的,不是二次元,是二次quadratic,这一段的运行次数为N*N,所以O(N^2). 再一个例子 while ( lo…
最优时间复杂度(不可靠) 最坏时间复杂度(保证) 平均时间复杂度(平均状况) 不同语句的时间复杂度: (1)顺序语句:使用加法 (2)循环语句:使用乘法 (3)分支语句:使用坏时间复杂度 例如:如下代码的时间复杂度: #!/usr/bin/env python #! _*_ coding:UTF-8 _*_ for a in range(1001): for b in range(1001): c = 1000 - a - b if a**2 + b**2 == c**2: print "a=%…
算法复杂度分为时间复杂度和空间复杂度. 其作用: 时间复杂度是指执行算法所需要的计算工作量: 而空间复杂度是指执行这个算法所需要的内存空间. (算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度). 简单来说,时间复杂度指的是语句执行次数,空间复杂度指的是算法所占的存储空间 时间复杂度 计算时间复杂度的方法: 用常数1代替运行时间中的所有加法常数 修改后的运行次数函数中,只保留最高阶项 去除最高阶项的系数 按数量…
1>递归相关: 递归:递归算法是一种直接或间接地调用自身算法的过程,在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且                   易于理解: 特点: (1)递归就是在过程或函数中调用自身: (2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口: (3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低,所以一般不提倡使用递归算法设计程序: (4)在递归调用的过程当中系统为每一层的返回点,局部量等开辟了栈来存储,递归次…
算法基础~链表~排序链表的合并(k条) 1,题意:已知k个已排序链表头结点指针,将这k个链表合并,合并后仍然为有序的,返回合并后的头结点. 2,方法之间时间复杂度的比较: 方法1(借助工具vector封装好的sort方法):将k * n个结点放到vector,则原 vector的排序时间复杂度是 O(nlogn); 有k*n个结点的排序,时间复杂度是 O(knlog(kn)); 方法2(分制后相连法),分制:这里咱要想到高中的DNA复制~一个DNA复制生成K个DNA的过程. [1----复制--…
Levenberg-Marquardt算法基础知识 (2013-01-07 16:56:17) 转载▼   什么是最优化?Levenberg-Marquardt算法是最优化算法中的一种.最优化是寻找使得函数值最小的参数向量.它的应用领域非常广泛,如:经济学.管理优化.网络分析.最优设计.机械或电子设计等等.根据求导数的方法,可分为2大类.第一类,若f具有解析函数形式,知道x后求导数速度快.第二类,使用数值差分来求导数.根据使用模型不同,分为非约束最优化.约束最优化.最小二乘最优化.   什么是L…
最近工作中讨论到了Raft协议相关的一些问题,正好之前读过多次Raft协议的那paper,所以趁着讨论做一次总结整理. 我会将Raft协议拆成四个部分去总结: 算法基础 选举和日志复制 安全性 节点变更 这是第一篇:<解读Raft(一 算法基础)> 什么是RAFT 分布式系统除了提升整个体统的性能外还有一个重要特征就是提高系统的可靠性. 提供可靠性可以理解为系统中一台或多台的机器故障不会使系统不可用(或者丢失数据). 保证系统可靠性的关键就是多副本(即数据需要有备份),一旦有多副本,那么久面临…
 算法基础-字符移位 时间限制:1秒 空间限制:32768K 题目: 小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间. 你能帮帮小Q吗? 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述: 对于每组数据,输出移位后的字符串. 输入示例: AkleBiCeilD 输出示例: kleieilABCD 思路: 遍历输入字符串中每一个元素,大写放进一个字符串2,小写放另外一个字符串3,…
问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好): import java.util.Scanner; /** * 求杨辉三角第m层第n个数字 * @author Administrator * */ public class Demo05 { public static int f(int m,int n) { if(n==0)return 1…
SM3密码杂凑算法基础学习 术语与定义 1 比特串bit string 由0和1组成的二进制数字序列. 2 大端big-endian 数据在内存中的一种表示格式,规定左边为高有效位,右边为低有效位.数的高阶字节放在存储器的低地址,数的低阶字节放在存储器的高地址. 3 消息message 任意有限长度的比特串.本文本中消息作为杂凑算法的输入数据. 4 杂凑值hash value 杂凑算法作用于消息后输出的特定长度的比特串.本文本中的杂凑值长度为256比特. 5 字word 长度为32的比特串 符号…