程序时间复杂度的计算小结

时间复杂度的计算原则:
复杂度就是求程序执行了多少次!一般简单的程序循环都可以用设未知数的方法求出来!
1.赋值语句或者是读写语句的复杂度为O(1),(表示增长率为常数),但是也有例外,如赋值语句的右边时函数的调用,这时候就要看函数调用所消耗的时间;
2.语句序列为叫法确定,即序列中时间消耗最多的语句运行;
3.分支语句,if...else...switch语句运行的时间为O(1),加上各分支运行的时间最多的语句;
4.循环语句运行是对输入数据的重复执行n次循环所消耗时间的总和,此时数据规模n代表重复次数,每次循环包括两部分1》循环体本身所运行的时间,2》计算循环参数,测试循环终止条件和调回循环头所需要的时间,后一部分所需的时间为O(1);分析循环是从内向外的分析,分析外层循环时,内存循环是已知的;
5.调用函数语句运行时间:先计算调用函数所用的时间,然后再整体计算;</div><div>6,goto语句(顺序,选择,循环),则可认为由goto语句引起的控制转移没有发生;
下面以冒泡排序为例:



void puple(int arry[],int number)
{
int i,j,temp; //1 因为是赋值语句,所以复杂度为O(1);
for(i=1;i<number;i++)//2 因为是循环语句,其复杂度为O(number-1);
for(j=0;j<number-i;j++)//3 因为是内存循环体,其复杂度为O(number-i),其复杂度取决i的取值,其执行的次数为:1+2+.....+(n-1)=(n2-3n+2)/2;
if(arry[j] > arry[j+1])//4 判断语句if---else都为O(1);
{
temp=arry[j];//5 赋值语句为O(1);
arry[j]=arry[j+1];//6 赋值语句为O(1);
arry[j+1]=temp;//7 赋值语句为O(1);
}
}
从上面的代码可以看出:其复杂度为:O(n2)+O(n)+O(1),取最大的,所以其复杂度为O(n2);


抽象数据类型:【abstract data type】ADT是一个数据模型和在该模型上定义的操作的集合的总称;【如:整型,实型,数组】
数据:data是对客观事物的符号的表示,在计算机科学中是指能输入到计算机中并被计算机程序处理的的符号的总称;
数据元素:data element 是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理,一个数据元素可由多个数据项组成;
数据对象:data object是性质相同的数据元素的集合,是数据的一个子集;
数据结构:data structure是相互之间存在一种或多种特定关系的数据元素的集合;语速相互之间的关系;
数据结构在计算机中的表示【又称映像】,成为数据结构的物理结构,又称存储结构;
数据类型:data type 是和数据结构密切相关的一个概念,她最早出现在一个高级的程序语言中,用一刻画程序造作的对象性;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值