数据结构ppt1绪论.pptVIP

  • 0
  • 0
  • 约1.21万字
  • 约 71页
  • 2019-11-27 发布于山西
  • 举报
1.4.2 算法效率的度量 时间复杂度分析的局限性 T(n) = nlog2n vs. U(n) = 100n O(nlog2n) O(n) nlog2n 100n (n2100) 其它度量方法: 空间复杂度:s(n) = O(f(n))表示随问题规模n的增大,算法运行所需存储量的增长率与f(n)的增长率相同。 若输入数据所占空间只取决于问题本身,和算法无关,则只需要分析除输入和程序之外的辅助变量所占额外空间。 1.4.3 算法存储空间的度量 例子:Big of Smalls问题求解 找出所有行中最小值中的最大值 1.4.3 算法存储空间的度量 int bigofSmalls(int mat[n][n]) { int max = mat[0][0]; for(int i=0; in; i++) { int min = mat[i][0]; for(int j=1; jn; j++) if(mat[i][j] min) min = mat[i][j]; if(min max) max = min; } return max; } 例子:Big of Smalls问题求解 找出所有行中最小值中的最大值 1.4.3 算法存储空间的度量 int bigofSmallsWithArray(int mat[n][n]) { int minArray[n]; for(int i=0; in; i++) { int min = mat[i][0]; for(int j=1; jn; j++) if(mat[i][j] min) min = mat[i][j]; minArray[i] = min; } int max = minArray[0]; for(int i=1; in; i++) if(minArray[i]max) max = minArray[i]; return max; } 本章学习要点 熟悉各名词、术语的含义,掌握基本概念。 抽象数据类型的定义。 理解算法五个要素的确切含义。 掌握计算语句频度和估算算法时间复杂度的方法。 作业(1) 将下列函数按时间复杂度从小到大排序。 n, n-n3+7n5, nlogn, 2n/2, n3, logn, n1/2+logn, (3/2)n 给出下列程序段的时间复杂度。 for(j=1; j=n; j*=2) ++x; for(j=1; j=n; j*=2) for(k=1; k=n; k++) ++x; 作业(2) 一个算法由下述递归方程描述,试求出算法的时间复杂度(n为2的整数幂)。 1 若n=1 T(n) = 2T(n/2)+n 若n1 * |sedjwik| * * Adelson-Velskii and Landis * * * 数据结构是一门和程序设计密切相关的课程。美国的一个计算机专家,Pascal语言的创始人Niklaus Wirth教授在1976年出版了一本书,说明算法+数据结构是进行程序设计的两大要素。也就是说要进行程序设计首先要解决的两个问题。那么什么是程序设计?程序设计是为计算机解题编制的一组指令集。所谓计算机解题?是指计算机对某类信息进行某种处理,这里包含两个问题,一是怎样进行处理,也就是处理问题的策略是什么,这就是算法要讨论的问题。第二是对处理的信息怎样表示,也就是问题的数学模型是什么。任何程序设计问题都包含这两方面。 * * * * * * 早期数值计算问题涉及的运算对象是简单的整型、实型或布尔型数据。程序设计者的主要精力集中于算法,无须重视数据结构。 随着计算机应用领域的扩大和软、硬件的发展,“非数值性问题”越来越重要。 * 要使计算机能够更有效地进行这些非数值性处理,就必须弄清楚这些操作对象的特点,在计算机中的表示方式以及各个操作的具体实现手段。 * * * 在用高级程序语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明他们所属的数据类型。 * /k??nu?θ/ * #include stdio.h #include string.h int times; int F(n) { if(n=1) return n; else { times++; return F(n-1)+F(n-2); } } int main() { int n,

文档评论(0)

1亿VIP精品文档

相关文档