1、解决问题方法的效率,跟数据的组织方式直接相关。
2、解决问题方法的效率,跟空间的利用效率直接相关。
3、解决问题方法的效率,跟算法的巧妙程度直接相关。
例1:写程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数。
#include <stdio.h>
//循环实现
void PrintN(int N)
{
int i;
for(i = 1; i<= N; i++)
{
printf("%d\n", i);
}
return ;
}
//递归实现
void printn(int N)
{
if(N)
{
printn(N-1);
printf("%d\n", N);
}
return ;
}
int main ()
{
int N;
scanf("%d", &N);
PrintN(N);
//printn(N);
return 0;
}
调用循环实现时,输入1000000,输出为:
可以看到这个输出是没有问题的。
下面调用递归实现,输入同样为1000000,输出为:
可以看到根本没有我所期望的输出,这是因为递归函数对空间的占用很恐怖,这个程序就是因为递归函数将空间完全吃掉,所以导致程序崩溃,无法得出运行结果。
一、 什么是数据结构?
数据结构是关于数据对象在计算机中间的组织方式的,而数据对象必定与加在其上的操作相关联,完成这些操作所用的方法就是算法。
1、逻辑结构
一对一的结构叫线性结构;
一对多的结构叫树;
多对多的结构叫图;
2、物理存储结构
物理存储结构就是我们说的这些逻辑结构在机器的内存里面到底怎么一个放法。
3、抽象数据类型
3.1、数据类型
1)、数据对象集
2)、 数据集合相关联的操作集
3.2、抽象
描述数据类型的方法不依赖于具体实现
1)、与存放数据的机器无关
2)、与数据存储的物理结构无关
3)、与实现操作的算法和编程语言无关