数据结构课程chap01绪论.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程chap01绪论

数据结构与算法 中国人民大学信息学院 经济信息管理系 蒋洪迅 010jianghx@ 课程学习方法与要求 本课程将分别讲述数据结构的基本概念、线性表、栈和队列、串和数组、树形结构、图结构、查找、排序和文件等内容。 学习本课程的基本方法 l上课认真听讲; l仔细阅读教材中的大量例题,从而体会并最终掌握数据结构中的基本概念;    l独立完成每个章节后面的练习题;  l认真完成实验及课程设计。 课程网站 /course/dataStructure 起泡排序 起泡排序有两个结束条件,或i=1或“一趟起泡”中没有进行过一次交换操作,后者说明该序列已经有序。因此起泡排序的算法执行时间和序列中整数的初始排列状态有关,它在初始序列本已从小到大有序时达最小值,而在初始序列从大到小逆序时达最大值,在这种情况下,通常以最坏的情况下的时间复杂度为准。 练习 下面程序段的时间复杂度为( ) ??for(int?i=0;?im;?i++) ?? for(int?j=0;?jn;?j++) ?????????????a[i][j]=i*j; 练习 设有一个递归算法如下 int fact(int n){//n大于等于0 if(n=0) return 1; else return n*fact(--n); } 则计算fact(n)需要调用该函数的次数为( )次,不计fact(n)。 A.n B.n+1 C.n+2 D.n-l * * * * * * * * * * * * * * 脑袋空不要紧,关键是不要进水。 * * * 有钱的捧个钱场,没钱的回家取点钱来捧个钱场。 地球是运动的,一个人不会永远处在倒霉的位置。 同样的一瓶饮料,便利店里2块钱,五星饭店里60块。很多时候,一个人的价值取决于所在的位置。 * * 男人的使命神圣而坚定:一是保卫祖国!二是听自己女人的话! 一句“拿着胜过十句“我会给你的。 * 所谓情话,就是你说了一些连自己都不相信的话,却希望对方相信。 * * * * * * * * 自由不是做你想做的,而是可以不做你不想做的。 * char == int * * * * * * * * * * * * * * * 知识是一种使求知者吃得越多越觉得饿的粮食。 * * * * * * * * 一个特定算法的“运行工作量” 的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。 假如,随着问题规模 n 的增长,算法执行时间的增长率和 f(n) 的增长率相同,则可记作: T (n) = O(f(n)) 称T (n) 为算法的(渐近)时间复杂度。 如何估算 算法的时间复杂度? 算法 = 控制结构 + 原操作 (固有数据类型的操作) 算法的执行时间 = 原操作(i)的执行次数×原操作(i)的执行时间 算法的执行时间 与 原操作执行次数之和 成正比 从算法中选取一种对于所研究的问题来说是 基本操作 的原操作,以该基本操作 在算法中重复执行的次数 作为算法运行时间的衡量准则。 例 一 两 个 矩 阵 相 乘 void mult(int a[], int b[], int c[] ) { // 以二维数组存储矩阵元素,c 为 a 和 b 的乘积 for (i=1; i=n; ++i) for (j=1; j=n; ++j) { c[i,j] = 0; for (k=1; k=n; ++k) c[i,j] += a[i,k]*b[k,j]; } //for } //mult 基本操作: 乘法操作 时间复杂度: O(n3) 例 二 起 泡 排 序 void bubble_sort(int a[], int n) { // 将 a 中整数序列重新排列成自小至大有序的整数序列。 for (i=n-1, change=TRUE; i1 change; --i) } // bubble_sort 基本操作: 赋值操作 时间复杂度: O(n2) { change = FALSE; // change 为元素进行交换标志 for (j=0; ji; ++j) if (a[j] a[j+1]) { a[j] ←→ a[j+1]; change = TR

文档评论(0)

wumanduo11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档