数据结构——期末复习.ppt
《数据结构——期末复习.ppt》由会员分享,可在线阅读,更多相关《数据结构——期末复习.ppt(65页珍藏版)》请在优知文库上搜索。
1、数据结构期末复习数据结构期末复习主要知识点主要知识点算法的时间复杂度计算方法算法的时间复杂度计算方法单链表单链表堆栈和队列的概念和应用堆栈和队列的概念和应用串的概念和应用串的概念和应用树的概念和应用树的概念和应用图的概念和应用图的概念和应用查找和排序查找和排序算法满足以下性质算法满足以下性质: (1)输入性输入性(2)输出性输出性 (3)有限性有限性 (4)确定性确定性 (5)可执行性可执行性算法设计满足以下目标算法设计满足以下目标: (1)正确性正确性 (2)可读性可读性 (3)健壮性健壮性 (4)高时间效率高时间效率 (5)高空间效率高空间效率算法的时间复杂度计算方法算法的时间复杂度计算方
2、法常见的时间复杂度表示:常见的时间复杂度表示:O(1),O(n),O(n2) ,O(n3),O(lbn) ,O(lgn)算法时间复杂度定义算法时间复杂度定义:T(n)=O(f(n),当且仅当存在正常数当且仅当存在正常数c和和n0,对所有的对所有的n(n n0)满足满足T(n)cf(n) 。T(n)为算法的)为算法的基本语句执行次数,称为时间复杂度,随基本语句执行次数,称为时间复杂度,随n增大与增大与f(n)增)增长接近相同,级,用长接近相同,级,用O(f(n))表示其复杂度即可称同一个表示其复杂度即可称同一个数量。数量。推导大推导大O阶的方法阶的方法:(1)用常数用常数1取代运行时间中的所有加
3、法常数。取代运行时间中的所有加法常数。(2)在修改后的运行次数函数中,只保留最高阶项。在修改后的运行次数函数中,只保留最高阶项。(3)如果最高阶项在且不是如果最高阶项在且不是1,则去除与这个项相乘的常数,则去除与这个项相乘的常数最后得到的结果就是大最后得到的结果就是大O阶阶 例例1 求和算法,求求和算法,求1+2+3.+99+100=5050。int i,sum=0,n=100; /执行了执行了1次次 for(i=1;i=n;i+) /执行执行n+1次次 sum=sum+i; /执行执行n次次 printf(“%d”,sum); /执行了执行了1次次 该算法一共执行了该算法一共执行了1+n+1
4、+n+1=2n+3次次在求时间复杂度的时候我们忽略头尾循环判断的开销,只需要在求时间复杂度的时候我们忽略头尾循环判断的开销,只需要分析影响一个算法时间复杂度的主要部分即可,即基本操作的分析影响一个算法时间复杂度的主要部分即可,即基本操作的数量必须表示成输入规模的函数:数量必须表示成输入规模的函数:该算法的该算法的时间复杂度为时间复杂度为 T(n)=O(n) 称为线性阶称为线性阶注意:分析这类算法的复杂度关键是分析循环结构的运行情况注意:分析这类算法的复杂度关键是分析循环结构的运行情况 例例2 求和算法,求求和算法,求1+2+3.+99+100=5050。int sum=0,n=100; /执行
5、了执行了1次次sum=(1+n)*n/2 /执行执行1次次printf(“%d”,sum); /执行了执行了1次次 该算法一共执行了该算法一共执行了1+1+1=3次次在求时间复杂度的时候只需要分析影响一个算法时在求时间复杂度的时候只需要分析影响一个算法时间复杂度的主要部分即可,即基本操作的数量必须间复杂度的主要部分即可,即基本操作的数量必须表示成输入规模的函数:表示成输入规模的函数:该算法的该算法的时间复杂度为时间复杂度为 T(n)=O(1) 称为常数阶称为常数阶注意:不管这个常数是多少,我们都记做注意:不管这个常数是多少,我们都记做O(1) ,而,而不是不是O(3)。 例例3 求和算法,求求
6、和算法,求1+2+3.+99+100+.=int i,j,x=0,sum=0,n=100; /执行了执行了1次次 for(i=1;i=n;i+) for(j=1;j=n;j+) x+; /执行执行n*n次次 sum=sum+x; printf(“%d”,sum); /执行了执行了1次次 在求时间复杂度的时候我们忽略头尾循环判断的开销,只需要分在求时间复杂度的时候我们忽略头尾循环判断的开销,只需要分析影响一个算法时间复杂度的主要部分即可,即基本操作的数量析影响一个算法时间复杂度的主要部分即可,即基本操作的数量必须表示成输入规模的函数:必须表示成输入规模的函数:该算法的该算法的时间复杂度为时间复杂
7、度为 T(n)=O(n2) 称为平方阶称为平方阶注意:循环的时间复杂度等于循环体的复杂度乘以该循环的次数注意:循环的时间复杂度等于循环体的复杂度乘以该循环的次数 例例1-3 设数组设数组a和和b在前边部分已赋值,求如下两个在前边部分已赋值,求如下两个n阶矩阶矩阵相乘运算算法的时间复杂度。阵相乘运算算法的时间复杂度。for(i=0;in;i+) for(j=0;jn;j+) cij=0; /基本语句基本语句1 for(k=0;kn;k+) cij=cij+aik*bkj; /基本语句基本语句2 该算法的该算法的时间复杂度为时间复杂度为 T(n)=O(n3) 例例1-4 设设n为如下算法处理的数据
8、个数,求如下算法的为如下算法处理的数据个数,求如下算法的时间复杂度。时间复杂度。 for(i=1;i=n;i=2*i) printf(“i=%dn”,i);解解: :设基本语句的执行次数为设基本语句的执行次数为T(n), ,有有2 2T T( (n n) ) n,即有即有T(n) lbn。所以该算法的时间复杂度为所以该算法的时间复杂度为T(n)=O(lb n)。 称为对数阶称为对数阶 例例1-5:下边的算法是用冒泡排序法对数字下边的算法是用冒泡排序法对数字a中的中的n个整数个整数类型的数据元素类型的数据元素(a0an-1),从小到大进行排序,求该算从小到大进行排序,求该算法的时间复杂度。法的时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 期末 复习