1.什么是数据结构?
“数据结构”是计算机中存储,组织数据的方式。通常情况下,精心选择的数据结构可以带来最优化的
算法。——维基百科
数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这种联系
可以通过定义相关的函数给出。——《数据结构,算法与应用》
2.数据结构与算法的关系?
精心选择的数据结构可以带来最优化的算法。
eg1.数据结构
如何在书架上摆放图书?(前提知道图书的规模)
两个问题1.新书如何插入? 2.如何找到已有的图书?
操作1:重头找 方法1:随便放
操作2:二分法 方法2:按首字母放
所以可以说数据结构就是解决数据如何插入和查找的问题?
eg2.写一个程序实现printN,输入一个正整数N,打印从1到N的全部正整数。
//循环实现
1.void main()
{
int N;
std::cin>>N>>std::end1;
for(int i=1;i<=N;i++)
{
std::cout<<i<<std::end1;
}
}
//递归实现
void main()
{
int N;
std::cin>>N>>std::end1;
if(N)
std::cout<<N-1<<std::end1;
std::cout<<N<<std::end1;
}
结果:当输入N=100000,递归函数不执行。
原因:这时,递归函数的空间使用的太多,而自爆。
结论:程序的效率与程序空间的利用率有关
eg3.计算给定多项式在定点x处的值
f(x)=a0+a1*x+a2*x(i) 具体的就不写了,就是展开
思想就是不能按照式子本来的样子来写,(会让有经验的程序员严重鄙视),
而要使用更加简洁的算法。
因为第一个程序要慢很多,调用#include <time.h> clock()
//计算程序运行了多长时间
#include <stdio.h>
#include <time.h>
clock_t start ,stop; //clock_t是clock函数的返回的变量类型
int main()
{
start=clock();
MyFunction();
stop=clock();
double duration;
duration=((double)(stop-start))/CLK_TCK;//CLK_TCK机器周期的打点数
}
结论:解决问题的效率与算法的巧妙程度有关。
“数据结构”是计算机中存储,组织数据的方式。通常情况下,精心选择的数据结构可以带来最优化的
算法。——维基百科
数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这种联系
可以通过定义相关的函数给出。——《数据结构,算法与应用》
2.数据结构与算法的关系?
精心选择的数据结构可以带来最优化的算法。
eg1.数据结构
如何在书架上摆放图书?(前提知道图书的规模)
两个问题1.新书如何插入? 2.如何找到已有的图书?
操作1:重头找 方法1:随便放
操作2:二分法 方法2:按首字母放
所以可以说数据结构就是解决数据如何插入和查找的问题?
eg2.写一个程序实现printN,输入一个正整数N,打印从1到N的全部正整数。
//循环实现
1.void main()
{
int N;
std::cin>>N>>std::end1;
for(int i=1;i<=N;i++)
{
std::cout<<i<<std::end1;
}
}
//递归实现
void main()
{
int N;
std::cin>>N>>std::end1;
if(N)
std::cout<<N-1<<std::end1;
std::cout<<N<<std::end1;
}
结果:当输入N=100000,递归函数不执行。
原因:这时,递归函数的空间使用的太多,而自爆。
结论:程序的效率与程序空间的利用率有关
eg3.计算给定多项式在定点x处的值
f(x)=a0+a1*x+a2*x(i) 具体的就不写了,就是展开
思想就是不能按照式子本来的样子来写,(会让有经验的程序员严重鄙视),
而要使用更加简洁的算法。
因为第一个程序要慢很多,调用#include <time.h> clock()
//计算程序运行了多长时间
#include <stdio.h>
#include <time.h>
clock_t start ,stop; //clock_t是clock函数的返回的变量类型
int main()
{
start=clock();
MyFunction();
stop=clock();
double duration;
duration=((double)(stop-start))/CLK_TCK;//CLK_TCK机器周期的打点数
}
结论:解决问题的效率与算法的巧妙程度有关。