乙肝传染吗,浅谈算法复杂度,车

今日就和咱们谈一谈算法复杂度嗷

——

1

 核算资源 

——

    首先要说到的是核算资源,程序运转时需求的资源有两种:

–时刻:程序运转需求的时刻。 

–空间:程乙肝感染吗,浅谈算法复杂度,车序运转需求的存储空间。  

    核算的资源是有限的,OJ上的标题中就常常有对运转时刻和空间的约束,例如:

Time 李景亮;Limit:2000/1000 MS 

(Java/乙肝感染吗,浅谈算法复杂度,车Others)

Memory Limit:65536/65536 K&nb乙肝感染吗,浅谈算法复杂度,车sp;(Java/Others)

——

2

 怎么丈量程序的运转时刻? 

——

举个栗子~

#include <bits/stdc++.h>

using namespace std;

int main(){

    int i,k;

    int n=1e8;

  &nbs胡歌的老婆王晓晨p; clock_t start, end;

    start = clock();

    for(i = 0; i < n; i++)

       k++;

    end = cloc宫兰芳k();

    cout << (double)(end - start) /   &nb中北大学个人门户日本亚马逊官网sp; CLOCKS_PER_SEC << endl;

    return 0;

}

    咱们在这个栗子顶用clock函数来核算运转时刻,而程序中的for句子,循环次数是n。

一般PC机的算力:

–当n = 1e8时,运转时刻0.164s。

–当n = 1e9时,运转时刻1.645s。 

    假如标题要求“Time Limit: 2000/1000 MS (Java/Others)”,那么内部的循环次数应该满意n江西科技师范大学<=1e8,即1亿次以内。

——

3

 算法复杂度怎乙肝感染吗,浅谈算法复杂度,车么核算? 

——

例如冒泡排序的时刻复杂度

void bubble_sort(int a[]){   //冒泡排序,成果仍放在a[]中

    for(in乙肝感染吗,浅谈算法复杂度,车t i = 1; i <= n-1; 里脊肉的做法大全i++)

        for(int j = 1; j <= n-i; j++)

            if(a[j] > a[j+1])

   中华卷烟价格             swap(a[j], a[j+1]);

}

    在bubble_sort()中有2层循环,循环次数是:

    n-1 + n-2 + ... +1 ≈ (n^2)/2;

    n在swap(a, 孤岛飞鹰b)中做了3次操作;总的核算次数是(3n^2)/2,复杂度记为O(n^2)。当n 土地公公= 100万时,核算1万亿次。

——

4

 复杂度的表明 

——

    上述比如中,把n称为问题的数据规划,把程序的复杂度记为O(n)。小鲜肉

    复杂度仅仅一个guide估量,不需求准确核算。 

    例如在一个有n个数的流年无序数列中,查找某个数a,或许榜首个数便是a,也或许最终一个数才是a。均匀查找时刻是n/2次,可是依然把查找的时刻复杂度记为O(n)。 

 &nstringendobsp;  在算法裁人剖析中,规划n前面的系数被认为是不重要的。即疏忽常数项,且只取最高次幂

——

5

 常见的算法评价 

——

    O(1):核算时刻是一个常数,和问题的规划n无关。

     用公式核算时,一次核算的复杂度便是O(1)。


 都市鉴宝达人;   O(logn) :核算时刻是对数

    一般是以2为底的对数,每一步核算后,问题的规划减小一倍。


 &nb微博粉丝排行sp;   O(n) :核算时刻随规划n线性增加

  &乙肝感染吗,浅谈算法复杂度,车nbsp; 在许多情况下,这是算法能到达的最优复杂度,由于对输入的n个数,程序一般需求处理一切的数,即核算n次。


    O(nlogn):算法或许到达的最优复杂度

    快速排序算法是典型比如。


     O(n^2) :一个两重循环的算法,复杂度是O(n^2)。&n荀bsp;  乙肝感染吗,浅谈算法复杂度,车;  例如冒泡排序,是典型的两重循环。


     O(n^3)O(n^4)等等同理,根本便是n重循环


     O(2^n) :一般对应调集问题。例如一个调集中有n个数,要求输出它的一切子集。


     O(n!) :在调集问题中,假如要求按次序输出一切的子集,那么复杂度便是O(n!)。

    今日就先讲到这儿,假如喜爱的话,费事点一下右王林的情妇雷帆下角的“在看”哟~