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

宁波网站设计推荐荣盛网络民宿网站开发dfd图

宁波网站设计推荐荣盛网络,民宿网站开发dfd图,wordpress历史记录,抖音小程序怎么删除掉一、算法好坏的度量 【事前分析法】 算法设计好后,根据算法的设计原理,只要问题规模确定,算法中基本语句执⾏次数和需求资源个数 基本也就确定了。 ⽐如求1 2 3 ... n − 1 n ,可以设计三种算法: 算法A&#xff…

一、算法好坏的度量


【事前分析法】
算法设计好后,根据算法的设计原理,只要问题规模确定,算法中基本语句执⾏次数和需求资源个数
基本也就确定了。
⽐如求1 + 2 + 3 + ... + n − 1 + n ,可以设计三种算法:

算法A:需要开辟⼀个⼤⼩为N 的空间。

const int N = 1e5 + 10;
int a[N];
int sum(int n)
{// 先把 1 ~ n 存起来 for(int i = 1; i <= n; i++){a[i] = i;}// 循环逐个数字相加 int ret = 0;for(int i = 1; i <= n; i++){ret += a[i];}return ret;
}

算法B:不需要开辟空间,直接求和。需要循环n 次,ret + = n 语句会执⾏n 次,⽽且随着问题规模的增⻓,执⾏次数也会增⻓。

int sum(int n)
{// 循环逐个数字相加 int ret = 0;for (int i = 1; i <= n; 
i++) {ret += i;}return ret;
}

算法C:不论问题规模为多少, 语句只会执⾏1 次。

int sum(int n)
{// 利⽤求和公式 return (1 + n) * n / 2;
}

综上所述,时间和空间的消耗情况就是我们度量⼀个算法好坏的标准,也就是时间复杂度和空间复杂度。

二、时间复杂度

时间复杂度
在计算机科学中,算法的时间复杂度是⼀个函数式 ,它定量描述了该算法的运⾏时间。这个函数式计算了程序中语句的执⾏次数。

案例:计算⼀下fun中++count语句总共执⾏了多少次?

void fun(int N) 
{ int count = 0; for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) { ++count; // 执⾏次数是 n*n,也就是 n^2 } } for(int k = 0; k < 2 * N; k++) {++count; // 执⾏次数是 2*n } int M = 10; while(M--) { ++count; // 执⾏次数 10 } 
}

fun 函数++count 语句的总执⾏次数:
T (N) = N +
2 2 × N + 10
• 当N = 10 时,T (N) = 100 + 20 + 10 = 130
• 当N = 100 时,T (N) = 10000 + 200 + 10 = 10210
• 当N = 1000 时,T (N) = 1000000 + 2000 + 10 = 1002010
• 当N = 10000 时,T (N) = 100000000 + 20000 + 10 = 100020010

推导⼤O渐进时间复杂度的规则:
1. 时间复杂度函数式T (N)中,只保留最⾼阶项,去掉那些低阶项;
2. 如果最⾼阶项存在且不是1 ,则去除这个项⽬的常数系数;
3. T (N)中如果没有N 相关的项⽬,只有常数项,⽤常数1 取代所有加法常数。

相关案例:

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

基本语句++count 关于问题规模n 总执⾏次数的数学表达式为:f(n) = n × 2 + 10 ;
保留最⾼阶项,省略最⾼阶项的系数后的⼤O渐进表⽰法为:O(n) 。

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

// ⽤递归计算 N 的阶乘 
long long fac(int N)
{if(N == 0) return 1;return fac(N - 1) * N;
}

递归算法时间复杂度求解⽅式为,单次递归时间×总的递归次数。
注意,这⾥只是简易的估算⽅式。递归算法的时间复杂度严谨的计算⽅法是利⽤主定理(Master
Theorem)来求得递归算法的时间复杂度。
但是,我们往后学习更加深⼊会发现,⼤多是情况下,我们并不需要计算出准确⽆误的时间复杂度,
只需要根据做题经验,简单估算⼀下即可。所以,这⾥为了不增加⼤家负担,对于递归算法,我们仅
需掌握这样简易的计算⽅式即可。
单次递归没有循环之类,所以时间复杂度为常数。总的递归次数就是递归过程中, 递归调⽤了多
少次。
F ac
F ac(5) 需要递归6 次,则F ac(n)就需要递归n + 1 次,故递归求阶乘的时间复杂度为O(n) 。

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

相关文章:

  • 网站信息优化的方式车陂手机网站建设电话
  • 青岛网站建设技术外包游戏开发物语最强8人
  • 友汇网站建设一般多少钱轻淘客轻网站怎么做
  • 18款禁用软件app网站入口做网站推广链接该怎么做
  • 网站开发软件环境河南网站建设优化技术
  • 怎样做易支付网站网站漏洞怎么修复
  • dede做的网站总被挂马怎样做网站关键词优化
  • 做文案的网站有些什么软件德阳网站seo
  • 原创文章对网站的好处网站建设中的时尚资讯
  • 有域名有服务器怎么做网站网页建设软件
  • 网站怎样推广 优帮云莱芜百度网站建设
  • 做什麽网站有前景中国版动漫网站模板
  • 吉林省工程建设标准网站建设网站域名备案
  • 建网站吧临沂网站建设对实体企业的重要性
  • 设计网站登录框ps怎么做网站建设服务网站
  • 怎么做网站排名人才网招聘信息
  • 仓库管理系统网站建设2817网站
  • 规划建立一个网站英德市城乡建设局网站
  • wordpress菜单默认对游客不显示做seo如何赚钱
  • 贵阳设计网站建设中企视窗做网站怎么样
  • 网站建设客户需求调查表沈阳网站公司哪个好
  • 移动端网站怎么做seo网站的三大标签
  • 彩票网站什么做湖南长沙网络公司有哪些
  • 住房城乡建设部执业资格注册中心网站互动网站建设特点
  • 建设ca网站网站页面布局分析
  • 淄博网站制作设计公司ih5制作平台官网免费
  • 开发一个网站模版淘宝联盟建微网站
  • 网站备案icp备案二维码生成器哪个软件好
  • 做短连接的网站广告公司网站设计方案
  • 网站建设公司营业执照什么是网站建设方案书