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

教育网站开发文档模板网站优化价格

教育网站开发文档模板,网站优化价格,互联网营销方案策划写作,传媒大学附近网站建设公司复杂度分析: 时间复杂度(算法中的基本操作的执行次数); 空间复杂度。 时间复杂度: 实际上我们计算时间复杂度时,我们其实并不需要计算准确的执行次数,只需要大概的执行次数,因此我们…

复杂度分析:

                时间复杂度(算法中的基本操作的执行次数);

                空间复杂度。

时间复杂度:

实际上我们计算时间复杂度时,我们其实并不需要计算准确的执行次数,只需要大概的执行次数,因此我们在这里使用大O的渐进表示法。常见的时间复杂度O(1), O(N²), O(N),         O(logN)。

大O符号:

是用于描述函数渐进行为的数学符号。

推导大O阶方法:

1.用常数1取代运行时间中的所有加法常数;

例:

计算下面代码的时间复杂度

void f(int N)
{int count = 0;for(int k = 0; k < 100; ++k){++count;}
}

答案:O(1)

注:确定的常数次,都是O(1)。

2.在修改后的运行次数函数中,只保留最高阶项;

例:

计算下面代码的时间复杂度

void f(int N)
{int count = 0;for (int i = 0; i < N; i++){for (int j = 0; j < N; j++){++count;}}for (int k = 0; k < 2 * N; k++){count++;}int M = 10;while (M--){++count;}printf("%d", count);
}

答案:O(N²)

注:准确的执行次数:N² + 2 * N + 10

     随着N的增大,这个表达式中N²对结果的影响最大

3.若最高阶项存在且不是1,则去除与这个项相乘的常数。得到的结果就是大O阶。

例:

计算下面代码的时间复杂度

void f(int N)
{int count = 0;for (int k = 0; k < 2 * N; ++k){count++;}int M = 10;while (M--){++count;}printf("%d", count);
}

答案:O(N)

特殊情况:

例一:

计算下面代码的时间复杂度

void f(int N, int M)
{int count = 0;for (int k = 0; k < N; k++){++count;}for (int k = 0; k < M; k++){++count;}
}

答案:O(M + N)

注:假如给了条件:M远大于N,答案是O(M);M和N差不多大,O(M)或O(N)。

例二:

计算下面代码的时间复杂度

const char* s(const char* str, char cha)
{while (*str != '\0'){if (*str == cha){return str;}++str;}return NULL;
}

假设字符串长度是N。

答案:O(N)

注:有些算法的时间复杂度存在最好,平均,最坏情况:

        最坏:O(N)

        平均:O(N/2)

        最好:O(1)

在实际中一般情况关注的是算法的最坏运行情况。

例三:

计算下面代码的时间复杂度

void B(int* a, int n)
{assert(a);for (size_t end = n; end > 0; --end){int exchange = 0;for (size_t i = 1; i < end; ++i){if (a[i - 1] > a[i]){Swap(&a[i - 1], &a[i]);exchange = 1;}}if (!exchange){break;}}
}

答案:O(N²)

注:第一趟冒泡:N

       第二趟冒泡:N - 1

       ........ 

      第N趟:1

以上是个等差数列,所以准确的次数是(N+1)*N/2

时间复杂度为O(N²)

例四:

计算下面代码的时间复杂度

int B(int* a, int n, int x)
{assert(a);int begin = 0;int end = n;while (begin < end){int mid = begin + ((end - begin) >> 1);if (a[mid] < x){begin = mid + 1;}else if (a[mid] > x){end = mid;}else{return mid;}}return - 1;
}

答案:O(logN)

注:假设找了X次

2的X的平方 = N

X=logN

因为有很多地方不好写底数,所以一般省略简写成logN。 

例五:

计算下面代码的时间复杂度

long long f(size_t N)
{return N < 2 ? N : f(N - 1) * N;
}

答案:O(N²)

注:递归调用了N次,每次递归运算--》O(1)

整体就是O(N)。

http://www.ds6.com.cn/news/56700.html

相关文章:

  • 网站前台用什么做免费下载百度并安装
  • 韩国平面设计网站百度网页版主页网址
  • wordpress建站案例视频教程东莞百度快速排名
  • 有做装修效果图赚钱的网站吗宁波seo快速优化教程
  • 培训网站大全seo咨询河北
  • 科技自主自强国家发展战略专业的网站优化公司
  • 国外css3网站广告类的网站
  • 中华人民共和国住房建设部网站百度seo代理
  • 河南建设网证书查询平台seo 360
  • 做网站的心得seo案例视频教程
  • 一学一做看视频网站有哪些内容淘宝关键词排名优化
  • 韩雪冬网站设计北京推广优化经理
  • 制作网站软件都在什么公司网络舆情软件免费入口
  • 房地网站制作舆情管理
  • 网站建设 风险衡阳seo优化
  • 网页升级访问中每天正常夫唯seo教程
  • 微信公众好第三方网站怎么做如何做好品牌宣传
  • 好的h5制作网站模板下载网络营销的10个特点
  • 做标书的视频网站app注册推广
  • 个人营销型网站网站网络营销
  • wordpress网站标题搜狗seo怎么做
  • 如何让网站自适应屏幕江苏网站seo营销模板
  • 北京市住建委官网首页优化推广网站淄博
  • ecto wordpress优化大师
  • 手机网站 域名解析百度知道免费提问
  • 苏州做网站推广的公司一键制作网站
  • 平面设计师磨刀石seo任务
  • 建设网站容易吗网站秒收录
  • java代做网站seo云优化如何
  • 网站开发的需求分析教学视频百度seo引流怎么做