浙大数据结构——1.1什么是数据结构

本文通过实例探讨了数据结构和算法在解决问题时的重要性,包括图书摆放、多项式计算等,展示了不同方法的效率差异,强调了数据组织方式、空间利用和算法设计对效率的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构的定义(略)

eg1:如何在书架上摆放图书?

1、随便放:好放不好找。

2、按字母放:好找不好放。

3、按类别字母放。

结论:解决问题方法的效率,与数据组织方式有关。

eg2:实现函数PrintN,使得传入一个正整数N后,能顺序打印出从1到N的全部正整数。

方法一:循环打印。

方法二:递归打印。

结论:解决问题方法的效率,与空间利用效率有关。

eg3:计算给定多项式在给定点X处的值。

f(x)=a0+a1*x+...+an-1*x^(n-1)+an*x^n

方法一:循环相加。

方法二:秦九韶算法。

结论:解决问题方法的效率,与算法巧妙程度有关。

#include <stdio.h>
#include <time.h>
#include <math.h> 
clock_t start, stop;
double duration;
#define MAXN 100 
#define MAXK 1e7

//直接求和 
double f1(int n, double a[], double x){
	int i;
	double p=a[0];//第一项 
	for(i=1;i<=n;i++){
		p += (pow(x,i)/a[i]);//第一项+后一项 作为第一项 
	}
	return p;
}

//秦九韶公式 
double f2(int n, double a[], double x){
	int i;
	double p=1/a[n];//最后一项 
	for(i=n;i>1;i--){
		p=p*x+1/a[i-1]; //最后一项*x+前一项 作为最后一项 
	}
	return p;
}

int main()
{
	int i;
	
	//构造数组a 
	double a[MAXN];
	a[0]=1;
	for(i=1;i<=MAXN;i++) {
		a[i]=(double)i;
	}
	
	//f1 
	start=clock();
	for(i=0;i<MAXK;i++){
		f1(MAXN,a,1.1);
	}
	stop=clock();
	duration=((double)(stop-start)/CLK_TCK);
	printf("ticks1 = %f\n",(double)(stop-start));
	printf("duration1 = %6.2e\n",duration);	
	
	//f2 
	start=clock();
	for(i=0;i<MAXK;i++){
		f2(MAXN,a,1.1);
	}
	stop=clock();
	duration=((double)(stop-start)/CLK_TCK);
	printf("ticks2 = %f\n",(double)(stop-start));
	printf("duration2 = %6.2e\n",duration);
	
	return 0;
}

描述数据结构的方法:抽象数据类型

eg4:“矩阵”的抽象数据类型的定义

1、数据对象集

2、操作集 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值