浙江大学数据结构第一讲:1.1什么是数据结构
2020-03-05 17:22
519 查看
第一讲:基本概念
1.1:什么是数据结构?
1.1.1: 图书摆放问题:
讨论:对中等规模、大规模的图书摆放,你有什么更好的建议 ?
一、把图书分类:把书分为科技类、艺术类、杂志等等种类;
二、每一类对应着一个字符或者汉字索引;
三、利用计算机建立索引目录,对所有的书按类别,按时间出版时间、按按类别等方式进行编号;
四、动态扩容:当一个类型的书达到计算机容量限度要可以扩容,达到增加书籍数量的目的;
1.1.2:关于空间使用 —例:PrintN函数实现:
写一个程序实现一个函数PrintN,使得传入的一个正整数为N的参数后,能顺序打印从1到N的全部整数
#include<stdio.h> int N; void printN1(int N){ //for循环实现 int i; for(i = 1;i <= N; i++){ printf("%d、", i ); } printf("\n"); } void printN2(int N){ //递归实现 if(N){ printN2(N - 1); printf("%d、", N ); } } int main(void){ scanf("%d" , &N); printN1( N ); printN2( N ); }
1.1.3:关于算法效率 —例:计算多项式的值
写程序计算给定多项式 f(X)=a0+a1x+a2x^2 +…+anx^n 在给定点x处的值
#include<stdio.h> #include<math.h> #include<time.h> clock_t start, stop; double duration; #define MAXN 10 //多项式最大项数,即多项式阶数+1 #define MAXK 1e7 //函数重复调用的最大次数 double f1( int n, double a[], double x ){ int i; double p = a[0]; for(i = 1; i <= n; i++ ) p += (a[i] * pow(x,i)); return p; } double f2( int n , double a[] , double x ){ int i; double p = a[n]; for( i=n ; i>0 ; i-- ) p = a[i-1] + x* p; return p; } int main(void){ int i; double a[MAXN]; //储存多项式的系数 for( i = 0 ; i < MAXN ; i++ ) a[i] = ( double ) i; start = clock(); for( i=0 ; i<MAXK ; i++ ) f1(MAXN - 1, a , 1.1 ); stop = clock(); duration = ( (double) (stop - start) ) / CLK_TCK / MAXK; printf("ticks1 = %f \n",(double)(stop - start)); printf("duration1 = %6.2e\n",duration); start = clock(); for( i=0 ; i<MAXK ; i++ ) f2(MAXN - 1, a , 1.1 ); stop = clock(); duration = ( (double) (stop - start) ) / CLK_TCK / MAXK; printf("ticks2 = %f \n",(double)(stop - start)); printf("duration2 = %6.2e\n",duration); return 0; }
写程序计算给定多项式 f(X)=1+x+x^2 /2+…+x^i/ i+…+x^100/100 在给定点x处的值
#include<stdio.h> #include<math.h> #include<time.h> clock_t start, stop; double duration; int n = 100; #define MAXK 2000 //函数重复调用的最大次数 double f1( double x , double a[]){ int i; double p = a[0] = 1.0; for(i = 1; i <= n; i++ ){ p += pow( x , i ) * a[i] ; } return p; } double f2( double x , double a[]){ int i; double p = a[n]; for( i=n-1 ; i>=0 ; i-- ){ p = a[i]+ x * p ; } return p; } int main(void){ int i; double a[ n + 1 ]; a[0] = 1.0; for(i=1 ; i<= n ; i++ ) a[i] = 1 / (double)i; start = clock(); for( i=0 ; i<MAXK ; i++ ) f1( 1.1 , a ); stop = clock(); printf("普通算法实现:\n"); printf("f(x) = %f\n",f1( 1.1 , a )); duration = ( (double) (stop - start) ) / CLK_TCK / MAXK; printf("程序运行2000次所用时间:ticks1 = %f \n",(double)(stop - start)); printf("平均时间:duration1 = %6.2e\n",duration); start = clock(); for( i=0 ; i<MAXK ; i++ ) f2( 1.1 , a ); stop = clock(); printf("\n秦九韶算法实现:\n"); printf("f(x) = %f\n",f2( 1.1 , a )); duration = ( (double) (stop - start) ) / CLK_TCK / MAXK; printf("程序运行2000次所用时间:ticks2 = %f \n",(double)(stop - start)); printf("平均时间:duration2 = %6.2e\n",duration); return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 1.1什么是数据结构
- 第1章 1.1 什么是数据结构
- 1.1 深度学习概论第一讲:什么是神经网络?
- 【陈越 数据结构】第一讲 什么是数据结构
- -------第一讲----第一节-------------- 1 基本概念-----------------什么是数据结构--------------
- 什么是数据结构-数据结构学习笔记1.1(基本概念)
- 浙大数据结构第一讲:1.2:什么是算法
- 1.1 什么是数据结构
- 什么是数据结构,都有哪些数据结构
- 浙江大学-陈越-数据结构-01-复杂度1 最大子列和问题 可通过C语言代码完全版(整合全部四种方法)
- 什么是数据结构?
- Maven:完整参考手册 1.1。Maven的...这是什么?
- 数据结构 第一讲
- 数据结构是什么的理解!!!!
- #求助 数据结构顺序栈的表示与实现,写完发现没有错误但运行不了,感觉似乎缺点什么,第一次写数据结构。求大佬指点,感激不尽
- 总结html上有什么会影响搜索引擎seo(更新1.1)
- 数据结构学习之 union 共用体(union 到底有什么用?)
- .NET (一)委托第一讲:什么是委托
- Gradle系列第一讲-什么是Gradle? Gradle是做什么的?
- 关于什么是 数据结构的精髓 -----总结