这里写自定义目录标题
1.1 什么是数据结构?
答:没统一的标准答案.
核心:数据结构和算法是两个经常挨在一起的东西,距离举例子感受数据结构。
1.2 如何在书架上摆放图书?
- 书架是什么样子的?
引申:数据怎么组织跟数据规模有关,难度也不一样。 - 方法:
(1)随便放:插入容易,查找麻烦。
(2)按书名拼音字母顺序排放(二分查找->查字典):插入麻烦,查找容易。
(3)分类:把书架划分为几个区域,每个区域指定摆放某种类别的图书,在每种类别内,按照书名的拼音字母顺序排放。
-------->操作1-插入:先定类别,二分查找确定位置,移出空位;
-------->操作2-查找:先定类别,二分查找; - 结论:
1.2 写程序实现一个函数PrintN,是的传入一个正整数N,能顺序打印从1到N的全部正整数.
1.循环实现:
void PrintN (int N)
{
int i;
for (i=1 ; i<=N;i++)
{
printf("%d\n",i);
}
return;
}
2.递归实现
void PrintN(int N)
{
if(N)
{
Print(N-1);
printf("%d\n",N);
}
return;
}
结论:
尽管递归代码清晰易理解,但是计算机不愿意跑,因为递归对空间的占用很恐怖。
1.3 写程序计算多项式在给定点x处的值
- 效率很低
double f(int n, double a[], double x){
int il
double p = a[0];
for (i = 1;i<=n;i++)
p += (a[i]*pow(x,i));
return p;
}
- 秦九韶算法
double f(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;
}
备注:clock
结论:法2比法1,在10^7次之后,能有一个数量级的差距
1.4 到底什么是数据结构?
1.5 抽象数据类型
· 数据类型:
1)数据对象集(属性)
2)数据集合相关联的操作集(方法)
····· C语言里是独立处理的
····· C++等高级语言中是集成的封装在一个类中(属性和方法)
·抽象:
描述数据类型的方法不依赖于具体的实现
1)与存放数据机器无关
2)与数据存储的物理结构无关
3)与实现操作的算法和编程语言无关
只描述数据对象集和相关操作集”是什么“,并不涉及”如何做到“
例子:“矩阵”抽象数据类型定义
上面的矩阵存储结构类型,以及下面的ElementType都是表示抽象数据类型,就是不指定具体的int,char等数据类型.