ds第一周学习记录

一、书本笔记

      1、逻辑结构和储存结构

     

                           顺序结构    ---数组类型

                         /

         储存结构

 

 

                         \

                            链式结构    ---指针类型

 

      2、抽象数据类型ADT

            数据抽象 数据封装 继承性 动态性

                             

          没有初始条件可不写

              抽象数据类型的特征:实现与操作分离,从而实现封装。

              (我感觉就是 一个容器封装起来 集合之类的 里面有能用的方法  方法类似面向过程的函数)

 

      3、算法   

           · 时间复杂度

                 问题规模   ---   不关注具体数值 而是数量级

           · 空间复杂度

 

             (这里我电脑运行PrintN 循环和递归比较 循环很大的数也可以继续 可是递归10000可以100000就不行了

 

递归

#include<stdio.h>
#include<iostream>

void PrintN(int n);

int main()
{
    int n;
    scanf("%d",&n);
    PrintN(n);
    
    return 0;
}

void PrintN(int n)
{
    if(n)
    {
        PrintN(n-1);
        printf("%d\n",n);
    }
    
}

循环

#include<iostream>

using namespace std;

int main()
{
    int n;
    cin>>n;
    
    for(int i=1;i<=n;i++)
    {
        cout<<endl<<i;
    }
    
    return 0;
} 

 

 

                 最后找到的我电脑临界是 no 64909  yes64908 

                 看递归 每次调上一次的n-1 这样就要先储存这个n这次的程序 然后再n-1 n-2 ... 再到最好是1 再返回去到n 这样对内存的消耗是很大的 

                 这说明当问题规模变大时 递归这种方法就比循环的空间复杂度要更大 因而问题规模变大 循环的PrintN要好一点)

                 

 

posted @ 2020-03-22 12:19  伍昕童  阅读(225)  评论(0)    收藏  举报