数据结构基本概念MOOC

数据结构的基本概念

一、导入
如何在书架上摆放图书?
1、随便放
新书插入简单,查找类似
2、按照书名字母排放
二分查找,新书怎么插入

例2 打印1到N

Void PrintN(int N)
{
    for(int i = 1 ;i <= N; i++)
    { 
        printf("%d\n", i );
    }
}
void PrintN(int N ){
    if(N){
        PrintN(N-1);
        PrintN("%d\n",N);
    }
}

第一个是循环实现,第二个是递归实现。递归都不用变量,特点是很简洁,但是递归对空间的占用是很恐怖的。当递归到达100000 十万时,就会如下错误。

递归报错

罢工了,why? 它把能用的空间都用了,还不够就爆了,告诉我们,解决问题的方法的效率,跟* 算法的空间的利用效率*是有关的。
例3:已知x计算多项式的值
方法1:直接计算~~

double f (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;
}

传进来多项式的指数n,它的系数的数组a[],计算的x,pow()函数需要#include

double f(int n, double a[],double x)
{
    int i;
    double p = a[n];
    for(i = n;i>0;i--)
    {
        p = a[n-1] + x*p;
    }
    return p;
}

c语言中,clock():捕捉从程序开始运行到clock()被调用时所消费的时间。这个时间单位是clock tick ,即“时钟打点”。
常数CLK_TCK : 机器始终美妙所走的时钟打点数:前提要引入time的包
但是运行之后的结果~~全是00..
我
就是因为跑的太快了,,日你妈~,玩我~时间太少都不到一个tick,所以怎么办呢?? 重复
第一个方法比第二个方法慢了一个数量级
所以,解决问题方法的效率,跟算法的巧妙程度是有关系的。

抽象 数据类型(Abstract Data Type)

数据类型 :面向对象里面的类,把下面两个就封装了
- 数据对象集
- 数据集合相关联的操作集
抽象:描述数据类型的方法不依赖具体的实现
- 与存放数据的类型无关
- 与数据存储的物理结构无关
例:“矩阵”的抽象数据类型的定义这里写图片描述
这就是一个抽象的表示,ElementType数据类型不固定int double
怎么实现这个矩阵呢?二维数组,一维数组,十字链表,没有固定,这就是抽象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值