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

长沙网站建设多少钱宣传片制作公司有哪些

长沙网站建设多少钱,宣传片制作公司有哪些,深圳出行最新通告,品牌网站建设哪里有什么是算法复杂度? 简单来说算法复杂度是用来衡量一个算法的优劣的,一个程序在运行时,对运行时间和运行空间有要求,即时间复杂度和空间复杂度。 目录 什么是算法复杂度? 大O的渐近表达式 时间复杂度示例 空间复杂度…

什么是算法复杂度?

        简单来说算法复杂度是用来衡量一个算法的优劣的,一个程序在运行时,对运行时间和运行空间有要求,即时间复杂度和空间复杂度。


目录

什么是算法复杂度?

大O的渐近表达式

时间复杂度示例

空间复杂度示例

 常见复杂度对比:


大O的渐近表达式

        时间复杂度,我们常常使用大O的渐近表示法

推导大O阶的规则:

●时间复杂度函数式T(N)中,只保留高阶项,去掉那些低阶项。

(因为当N不断变大时,低阶项对结果的影响越来越小,当N无穷大时,就可以忽略不计了)

●如果最高阶项存在且不是1,则去除这个项目的常数系数。

(因为当N不断变大,这个系数对结果的影响不断变小,当N无穷大时,其就可以忽略不计了)

●T(N)如果没有N相关的项目,只有常数项,那么就用常数1替代所有加法。


时间复杂度示例

1.

// 计算Func2的时间复杂度? 
void Func2(int N) 
{ int count = 0; //1次for (int k = 0; k < 2 * N ; ++ k) { ++count; //2*N次} int M = 10; while (M--) { ++count; //10次} printf("%d\n", count); 
}

 得:T(N)=1+2*N+10

由第一条和第二条规则得到时间复杂度O(N).


2.

// 计算Func3的时间复杂度? 
void Func3(int N, int M) 
{ int count = 0; for (int k = 0; k < M; ++ k) //M次{ ++count; } for (int k = 0; k < N ; ++ k) //N次{ ++count; } printf("%d\n", count); 
}

 得:T(N)=M+N

由第一条规则或第二条规则得到时间复杂度O(N).

 (因为使用N代表其中增长速度快的哪一项,则忽略掉增长速度慢的那一项,当M和N增长速度一样时为2N,则忽略系数)


3.

// 计算Func4的时间复杂度? 
void Func4(int N) 
{ int count = 0; for (int k = 0; k < 100; ++ k) //100次{ ++count; } printf("%d\n", count); 
}

 得:T(N)=100

由第三条规则得到时间复杂度O(1).


4.

// 计算strchr的时间复杂度? 
const char * strchr ( const char * str, int character)
{const char* p_begin = s;while (*p_begin != character){if (*p_begin == '\0')return NULL;p_begin++;}return p_begin;
}

①最好情况

        str的第一个字符就等于character,得:T(N)=1,则时间复杂度为O(1).

②平均情况

        要查找的字符在str的中间,得:T(N)=N/2,则时间复杂度为O(N).

③最差情况

        要查找字符在str的末尾,得:T(N)=N,则时间复杂度为O(N).

一般的我们取最差情况来表示算法的时间复杂度


★某些算法存在分情况的时间复杂度

        ●最坏情况:任意输入规模的最大运行次数(上界).

        ●平均情况:任意输入规模的平均次数.

        ●最好情况:任意输入规模的最小次数(下界).

 5.

// 计算BubbleSort的时间复杂度? 
void BubbleSort(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 == 0) break; } 
}

通过上面的分析,我们可尝试求出三种情况:

最坏情况:倒序,O(N^2)

平均情况:平均情况,O(N^2)

最好情况:有序,O(N)


6.

void func5(int n)
{int cnt = 1;while (cnt < n){cnt *= 2;}
}

分析得T(N)=log2n,即O(logn).


7.

// 计算阶乘递归Fac的时间复杂度? 
long long Fac(size_t N) 
{ if(0 == N)return 1; return Fac(N-1)*N; 
}

时间复杂度:O(N).


空间复杂度示例

        空间复杂度的表示也使用大O表达式。

1.

// 计算BubbleSort的时间复杂度? 
void BubbleSort(int* a, int n) 
{ assert(a); //1次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 == 0) break; } 
}

空间复杂度:O(1).


// 计算阶乘递归Fac的空间复杂度? 
long long Fac(size_t N) 
{ if(N == 0) return 1; return Fac(N-1)*N; 
}

开辟了N个函数栈帧,空间复杂度为O(N)


 常见复杂度对比:

  

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

相关文章:

  • 萍乡做网站哪家好拓者设计吧官网案例
  • 建设银行网站查询房贷信息网址导航哪个主页最好
  • php做网站步骤设计网站的制作框架
  • 设计师在线网站南昌网站开发公司电话
  • 手机网站的特效培训学校 网站费用
  • 做衣服接订单的网站记事本做网站的流程
  • 学院网站建设推进会找关键词的方法与技巧
  • 免费建站赚钱郑州做网站远辰
  • 凡科网网站建设微信棋牌游戏代理平台
  • 辽宁建设工程信息网直接发包代理机构流程兰州网站seo收费
  • 浙江英文网站建设wordpress 页尾修改
  • 大连网站排名优salutation wordpress
  • 广州市建设集团网站源服务器发生5xx错误
  • 建设网站前端长沙外贸建站
  • 网站优化设计方案中国企业黄页大全
  • 企业网站怎么备案行业垂直网站开发
  • 哈尔滨市延寿建设局网站php网站商城源码
  • 网站怎么做背景不变页面滑动学校网站php源码|班级主页教师博客学生博客|学校网站织梦仿
  • 中国建设银行网站企业网银收费互动对战平台
  • 社交网站设计wordpress对接易支付宝
  • 建设信用卡银行积分商城网站aso排名优化知识
  • 合肥营销型网站会所网站模板
  • 韩国有哪些专业做汽车的网站上海做网站的公司
  • 吕梁购物网站开发设计怎么看网站被降权
  • 公众号里的电影网站怎么做建设工程施工范围
  • 中山网页网站设计模板一个网站做多有几种颜色
  • 适合在线做笔试的网站网络运维必备知识
  • 网站 文件验证网站模版怎么做
  • 制作网站 美工seo网页推广
  • 北京建站免费模板wordpress支持多域名