当前位置: 首页 > news >正文

批量发布网站在哪些网站做收录比较快

批量发布网站,在哪些网站做收录比较快,重庆公司注册地址,seo搜索引擎营销工具文章目录 时间复杂度常数阶时间O(1)对数阶时间O(logN)线性阶时间O(n)线性对数阶时间O(nlogN)平方阶时间O(n*n) 空间复杂度常量空间O(1)线性空间O(n)二维空间O(n*n)递归空间 时间复杂度 常数阶时间O(1) 代码在执行的时候,它消耗的时间并不随着某个变量的增长而增长…

文章目录

  • 时间复杂度
    • 常数阶时间O(1)
    • 对数阶时间O(logN)
    • 线性阶时间O(n)
    • 线性对数阶时间O(nlogN)
    • 平方阶时间O(n*n)
  • 空间复杂度
    • 常量空间O(1)
    • 线性空间O(n)
    • 二维空间O(n*n)
    • 递归空间

时间复杂度

常数阶时间O(1)

  • 代码在执行的时候,它消耗的时间并不随着某个变量的增长而增长,那么无论这类代码有多长,都可以用O(1)来表示它的时间复杂度
  • 我们知道常数项对函数的增长速度影响不大,所以当T(n)=C,C为一个常数的时候,我们说这个算法的时间复杂度为O(1);如果T(n)不等于一个常数项时,直接将常数项省略。
int i=1;
int j=2;
++i;
j++;
int m=i+j;

对数阶时间O(logN)

  • 在while循环里面,每次都将i乘以2,乘完之后,i距离n就越来越近了。我们试着求解一下,假设循环x次之后,i就大于n了,此时这个循环就退出了,也就是说2的x次方等于n,那么x=n
int i=1;
while(i<n)
{
i=i*2;
}

线性阶时间O(n)

  • for循环里面的代码会执行n遍,因此它消耗的时间是随着n的变化而变化的
  • 如果T(n)不等于一个常数项时,直接将常数项省略。因为函数的阶数对函数的增长速度的影响是最显著的,所以我们忽略与最高阶相乘的常数.
  • 我们知道高次项对于函数的增长速度的影响是最大的,同时因为要求的精度不高,所以我们直接忽略低次项。或者说:如果复杂度是多个n的函数之和,则只关心随n的增长而增长得最快的那个函数。
int aFunc(int n){for(int i=0;i<n;i++){             //n+1次printf("Hello,World!\n");     //n次}return 0;                         //1次
}

这个代码需要(n+1+n+1)=2n+2次运算,时间复杂度为O(n)

线性对数阶时间O(nlogN)

  • 将时间复杂度为O(logN)的代码循环n遍的话,那么它的时间复杂度就是n*O(logN),也就是O(nlogN)
for(m=1;m<n;m++){int i=1;while(i<n){i=i*2;}
}

平方阶时间O(n*n)

  • 如果把O(n)的代码再嵌套循环一遍,它的时间复杂度就是O()
  • 如果将其中一层循环的n改成m那它的时间复杂度就变成O(m*n)
for(x=1;i<=n;x++){for(i=1;i<=n;i++){j=i;j++;}
}

【例1】N×N矩阵相乘

for(i=1;i<=n;i++)                          //n+1for(j=1;j<=n;j++){                     //n*(n+1)c[i][j]=0;                         //n*nfor(k=1;k<=n;k++)                  //n*n*(n+1)c[i][j]=c[i][j]+a[i][k]*b[k][j];//T(n)=O(n*n*n)}
  • 级数求和的方式去算

【例2】

for(i=1;i<=n;i++)for(j=1;j<=1;j++)for(k=1;k<=j;k++)x=x+1;

【例3】分析以下程序的时间复杂度

i=1;
while(i<=n)i=i*2;

关键是要找出来执行次数x与n的关系,并完成n的函数。

  • 若循环执行1次:i=1*2=2
  • 若循环执行2次:i=2*2=2^2
  • 若循环执行3次:i=22*2=23,……
  • 若循环执行x次:i=2^x

设语句i=i*2执行次数为x次,由循环条件i<=n,所以2^x<=n,所以x<=log以2为底n

即f(n)<=log以2为底n,取最大值f(n)=log以2为底n

空间复杂度

常量空间O(1)

  • 如果算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量,可表示为O(1)
int i=1;
int j=2;
++i;
j++;
int m=i+j;

线性空间O(n)

  • 这段代码中,第一行new了一个数组出来,这个数据占用的大小为n,这段代码的2-6行,虽然有循环,但没有再分配新的空间。因此,这段代码的空间复杂度主要看第一行即可,即S(n)=O(n)
int[] m=new int[n];
for(i=1;i<=n;++i)
{j=i;j++;
}

【例】将一维数组a中的n个数逆序存放到原数组中。

【算法1】交换数组a中每一个位置的值
for(i=0;i<n/2;i++){t=a[i];         //创建辅助空间t,变量t与n是多少没有关系.S(n)=O(1)a[i]=a[n-i-1];a[n-i-1]=t;
}
【算法2】将a中所有元素依次倒着放入b数组
for(i=0;i<n;i++)b[i]=a[n-i-1]; //创建辅助数组b,b的大小和数组a的大小一样,S(n)=O(n)
for(i=0;i<n;i++)a[i]=b[i];

二维空间O(n*n)

当算法分配的空间是一个二维数组集合,并且集合的长度和宽度都与输入规模n成正比时,空间复杂度记作O()

int[][] matrix=new int[n][n];//O(n^2)
int[][] matrix=new int[m][n];//O(mn)

递归空间

正如下面代码一样,递归代码中没有显示声明变量或者集合,但是计算机在执行程序时,会专门分配一块内存,用来存储“方法调用栈”。

void fun4(int n){if(n<=1){return;}fun4(n-1);...
}

方法调用栈包括入栈和出栈两个操作:

当进入一个新方法时,执行入栈操作,把调用的方法和参数信息压入栈中

当方法返回时,执行出栈操作,把调用的方法和参数信息从栈中弹出

还是上述代码,假设现在传入参数5,那么方法fun4(5)的调用信息先入栈:

method fun4

n 5

接下来递归调用相同的方法,方法fun4(4)的调用信息入栈:

method fun4

n 4

method fun4

n 5

以此类推,递归越来越深,栈内的元素也越来越多,最终:

method fun4

n 1

method fun4

n 2

method fun4

n 3

method fun4

n 4

method fun4

n 5

当n=1的时候,触发递归的结束条件,执行return,方法出栈。最终所有入栈的元素都会出栈。

由上面“方法调用栈”的出入栈过程可以看出,执行递归操作所需要的内存空间和递归的深度成正比。纯粹的递归操作的空间复杂度也是线性的,如果递归的深度是n,那么空间复杂度就是O(n).

http://www.yayakq.cn/news/169146/

相关文章:

  • 用什么软件做动漫视频网站重庆市建设工程信息网人员公示
  • 百度蜘蛛网站国外的设计网站app
  • 网站建设方案模板网站怎么做跟踪链接
  • 小白网站建设旅游商城网站模板免费下载
  • 品牌形象网站建设百度应用宝
  • 那些网站做的非常好看的传媒公司做网站编辑 如何
  • 网站建设论文设计专业的网站设计公司
  • 公司网站备案有什么用如何统计网站pv
  • 速升网网站是多少钱有做电动车修车的网站吗
  • 网站备案渝手机网站flash
  • 桂林做网站建设的公司没有网站也可以做cpa
  • 新建网站解析域名公司测名
  • 建立网站赚钱佛山科技网站建设
  • 怎么建设两个大淘客网站中小企业网络搭建
  • 新农村建设网站知乎seo自动工具
  • 网站建设投标ppt模板分析海报的网站
  • 建设网站需要了解些什么问题本地镇江网站建设
  • ih5平台发展前景滁州seo网站排名优化
  • 什么做网站做个多少钱啊wordpress免费
  • 网站开发者模式下载视频教程房产加盟
  • 为什么广告不集中建设广告网站番禺大石
  • 江干区住房和城市建设局网站亚运村网站建设
  • 站酷网站源码网站建设好的公司
  • 京东网站设计特点兄弟们拿走不谢
  • 网站网页的优化方法网站程序哪个好
  • 胶州网站开发威海高端网站建设
  • 玛伊网站做兼职加入要多少钱电商seo优化是什么
  • 兰州网站seo按天计费云南省住房和建设执业资格注册中心网站
  • 淘宝上面建设网站dw软件网站建设教程视频
  • 网站添加备案信息吗百度收录网站标题