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

公司宣传网站建站公司产品推广文案

公司宣传网站建站,公司产品推广文案,建立网站 用英语,中国企业排行榜前十名算法复杂度 1.数据结构前言1.1 数据结构1.2算法1.3算法效率 2.时间复杂度3.大O渐进表示法3.1大O渐进表示法概念3.2时间复杂度示例 4.空间复杂度 1.数据结构前言 1.1 数据结构 数据结构是计算机存储,组织数据的方式,指相互之间存在的一种或者多种特定关…

算法复杂度

  • 1.数据结构前言
    • 1.1 数据结构
    • 1.2算法
    • 1.3算法效率
  • 2.时间复杂度
  • 3.大O渐进表示法
    • 3.1大O渐进表示法概念
    • 3.2时间复杂度示例
  • 4.空间复杂度

1.数据结构前言

1.1 数据结构

数据结构是计算机存储,组织数据的方式,指相互之间存在的一种或者多种特定关系数据元素的集合。没有一种单一的数据结构对所有用途都有用,所以就有各式各样的数据结构,如:线性表,树,图,哈希等。

1.2算法

算法就是一系列的计算步骤,用来将输入数据转化成输出结果。4

1.3算法效率

复杂度的概念:
算法在编写成可执行程序时,运行时需要耗费一定的时间和空间(内存)资源。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度空间复杂度
时间复杂度衡量算法运行所需要的快慢,空间复杂度是衡量算法运行时所需要的额外的空间。

2.时间复杂度

定义:在计算机科学中,算法的时间复杂度是⼀个函数式T(N),它定量描述了该算法的运行时间。
我们知道算法程序被编译后生成二进制指令,程序运行,就是cpu执行这些编译好的指令。那么我们通过程序代码或者理论思想计算出程序的执行次数的函数式T(N),假设每句指令执行时间基本⼀样(实际中有差别,但是微乎其微),那么执行次数和运行时间就是等比正相关,这样也脱离了具体的编译运行环境。执行次数就可以代表程序时间效率的优劣。

// 请计算⼀下Func1中++count语句总共执⾏了多少次?
void Func1(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;}
}

在这里插入图片描述
此代码执行的基本次数为:
Func1(N)=N²+2N+M
此时这个式子为一元二次方程,对式子影响结果最大的就是N²。所以我们只需要计算程序能代表增长量级的大概执行次数,复杂度的表示通常使用大O的渐进表示法。

3.大O渐进表示法

3.1大O渐进表示法概念

大O渐进表示法:是用来描述渐进的数学符号。
推导大O的规则:

  • 时间复杂度函数式T(N)中,只保留最高阶项,去掉那些低阶项,因为当N不断变大时,低阶项对结果影响越来越小,当N无穷大时,就可以忽略不计了。
  • 如果最高阶项存在且不是1,则去除这个项目的常数系数,因为当N不断变大,这个系数对结果影响越来越小,当N无穷大时,就可以忽略不计了。
  • T(N)中如果没有N相关的项目,只有常数项,用常数1取代所有加法常数。

3.2时间复杂度示例

示例一:

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

Func2的时间复杂度为: O(N)
示例二:

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

Func3的时间复杂度为: O(1)
示例三

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

T (N) = M + N
因此:Func4的时间复杂度为: O(N)

4.空间复杂度

空间复杂度计算规则基本跟实践复杂度类似,也使用大O渐进表示法。
注意:函数运⾏时所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译期间已经确定好了,因此空间复杂度主要通过函数在运行时候显式申请的额外空间来确定。

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;}
}

BubbleSort额外申请的空间有exchange等有限个局部变量,使用了常数个额外空间。
因此空间复杂度为 O(1)

http://www.dtcms.com/wzjs/524887.html

相关文章:

  • 自己做网站大概需要多少钱如何建立独立网站
  • 四川建设人员数据网站google seo优化
  • 网站群建设规范深圳seo优化公司哪家好
  • 百度上搜不到网站推广网络推广平台
  • 潮州移动网站建设深圳网站优化培训
  • 使用阿里云建网站百度查询入口
  • 上海专业网站建设费网站排名优化师
  • 策划行业网站站长分析工具
  • cc域名做网站怎么样百度统计网站
  • 甘肃手机网站建设新seo排名点击软件
  • 1688是什么平台太原seo关键词排名
  • 东莞南城做网站推广的公司小型培训机构管理系统
  • 大众点评网站模板搜索引擎推广与优化
  • 怎样做企业网站建设厨师培训机构
  • 网络架构模拟器上海免费关键词排名优化
  • 杭州萧山网站建设河北软文搜索引擎推广公司
  • 手机网站用什么软件seo公司培训课程
  • 网络营销软件推广注册赚钱seo的中文名是什么
  • 珠海市官网网站建设价格seo整体优化步骤怎么写
  • 招聘网站代做常见的网络营销方式
  • 非政府组织网站的建设互联网服务平台
  • 最新军事新闻事件报道seo推广怎么样
  • 怎么自学做网站凡科建站怎么用
  • 全球网站流量排名查询网站入口百度
  • 潮州网站制作东莞疫情最新消息
  • 哪个网站建站好北京seo网站优化公司
  • 百度云主机做网站常见的营销方式有哪些
  • 注册深圳公司流程及费用seo详细教程
  • 网站的设计方案在哪里做网站用什么编程软件
  • 如何安装网站模版产品策划方案怎么做