首页 > 其他分享 >数据结构时间复杂度

数据结构时间复杂度

时间:2023-12-17 13:11:42浏览次数:34  
标签:count 数据结构 int 复杂度 时间 执行 sum

复杂度分为时间复杂度和空间复杂度

时间复杂度

概念:

若存在函数f(n)

记作T(n)=O(f(n)) .称O(f(n)) 为时间复杂度。

T(n)为常熟操作执行次数

简单理解,时间复杂度就是把T(n)简化为一个数量级,这个数量级可能为n,n^2``````

 

1.常数阶

这种与问题规模的大小无关(n的多少),执行时间恒定的算法,O(1)时间复杂度,又叫常数阶。

 

int sum=0 ,n=100;/*执行1次*/
sum=(1+n)*n/2; /*执行一次*/
printf("%d",sum)/*执行一次*/

 

2.线性阶

要确定某个算法的阶次,我们需要确定某个特定语句运行的次数。

因此,我们要分析算法的复杂度,关键就是分析循环结构的某个特定语句运行情况。

 它的循环的时间复杂度为O(n),因为循环体中的代码需要执行n次

for(int i=0;i<n;i++){
int sum=0;/*时间复杂度为O(1)的程序步骤序列*/
}

 

3.对数阶

为此count*2之后,就距离n更近了一分。也就是说,有多少个2相乘后大于n,则会退出循环。

由2^x=n 得到x=log2(n),所以这个循环的时间复杂度为O(log2(n)),可以写为O(logN)

int count=1;
while(count<n){
count=count*2;
/*时间复杂度为O(1)的程序步骤序列*/
}

 

4.平方阶

这段代码的时间复杂度为O(n^2)

int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
/*时间复杂度为O(1)的程序步骤序列*/
}
}

 

 

推到时间复杂度的方法:

1.当运行时间只有常数时,则用1来代替。

 上面执行了4次但是用O(1)表示。

2.在得到的运行次数函数中,只保留最高阶,且除去最高阶项中相乘的常数。

 3.常见的时间复杂度

 

 

 

 

标签:count,数据结构,int,复杂度,时间,执行,sum
From: https://www.cnblogs.com/aixin52129211/p/17908954.html

相关文章

  • 数据结构绪论
    数据定义:数据是信息的载体,所有能被输入到计算机中,且能被计算机处理的符号的集合。例:在生活中的各种信息都可以作为数据来进行输入和处理。eg:图片·身份信息等。数据元素定义:数据元素是数据的基本单位,常被作为一个整体来考虑。例如:每个学生信息就是数据元素数据项定义:数据......
  • 数据结构与算法 第一章(48课时课程笔记)Data Structure and Algorithms
    数据结构基础知识 数据(Data):是对信息的一种符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。数据元素(DataElement):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项(DataItem)组成。数据......
  • Redis数据结构8:REDIS_HASH
    REDIS_HASHHash本质上就是一个保存若干键值对的数据结构,类似于Java中的HashMap。同样的,hash中只能存在一个独一无二的key,所有的操作都围绕key展开。hash的最大优点在于其可以提供最佳O(1)的查询时间复杂度。通过一段原始数据key,通过特定算法将其哈希值转化为数组下标,通过相同的......
  • 【纯手工打造】时间戳转换工具(python)
    1.背景最近发现一个事情,如果日志中的时间戳,需要我们转换成时间,增加可读性。或者将时间转换成时间戳,来配置时间。相信大多人和我一样,都是打开网页,搜索在线时间戳转换工具,然后复制粘贴进去。个人认为可以手工打造一个python版本的时间戳转换工具,来解放双手,减少打开网页的时间,于是乎......
  • 电脑时间不同步导致的上网报错:core/proxy/vmess/encoding: failed to read response h
    报错内容: 2023/12/1614:08:56[Warning][775541588]xxxxx.com/core/app/proxyman/outbound:failedtoprocessoutboundtraffic>xxxxx.com/core/proxy/vmess/outbound:connectionends>xxxxx.com/core/proxy/vmess/outbound:failedtoreadheader>xxxx......
  • 基于LSTM模型的时间序列预测(车厢重量预测),Python中Keras库实现LSTM,实现预测未来未知数
    简介LSTM是一种常用的循环神经网络,其全称为“长短期记忆网络”(LongShort-TermMemoryNetwork)。相较于传统的循环神经网络,LSTM具有更好的长期记忆能力和更强的时间序列建模能力,因此在各种自然语言处理、语音识别、时间序列预测等任务中广泛应用。问题场景:对一节火车进行装载货物,......
  • 嵌入式的学习需要合理规划时间
    低级的欲望放纵即可获得,高级的欲望只有克制才能达成。——卡耐基1、粉丝的误会很多粉丝,问我, "胡老师我想报您的培训班。"...得知我知识业余时间写文章,紧接着又会问,"jg单位这么清闲啊,你居然有这么多时间写文章的?而且你文章很深,每一篇我都看都要看很久!"...这种粉丝确定不是来害......
  • Java中常见的数据结构
    一、数组二、链表三、栈四、队列五、List类1.ArrayList:底层是数组结构。2.LinkedList:底层结构是链表。六、LinkedList类七、Vector八、HashSet集合九、LinkedHashSet集合......
  • Android app 浮动时间APP(Android)
    前言全局说明浮动时间APP(Android)各大购物网站的服务器精确时间一、网址http://float.bertsir.com浮动时间,一个为抢购而生的APP,这个软件不是外挂,经常抢购的人应该必备的浮动时间App。免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。参......
  • C++ Qt开发:DateTime日期时间组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QDateTime日期与时间组件的常用方法及灵活运用。在Qt中,日期和时间的处理通常使用QDateTime类。......