zoukankan      html  css  js  c++  java
  • -------第一讲----第一节-------------- 1 基本概念-----------------什么是数据结构--------------

    数据结构(date structure)是计算机中储存,组织数据的方式.通常情况下,精心选择的数据结构可以带来最优效率(短小精悍)的算法.---------------------数据结构和算法是紧密相关的.

    例一:  怎样在书架上放置一些书籍(给了你一些数据和一些储存空间你应该怎样将这些数据储存起来)?

    思考时间:----------------------------------------------------------;

    放置图书需要注意的问题:

    操作1:新书怎么插入?

    操作2:怎么找到一本特定的书?

    --------------------------------------下面是我的想法------------------------------------

    1:按照数据从小到大的顺序以数组的方式(在物理地址上连续的储存).(物理结构)

    2:按照数据从小到大的顺序以链表的方式储存.

    -----------讲解----------------------放置图书----------------------------------------------------

    1:随便放.

    操作1:那里有空放哪里.....

    操作2:  累成哮天犬........

    2按照书名拼音顺序摆放...

    操作1:缺点:适用于不经常变动的有序表...插入和删除比较困难.

    操作2:二分查找   优点:速度快.比较的次数少. 0

    3:将书架划分成几块区域,每块区域指定摆放某一类图书.(对第二种方法的优化)

    问题:

        1:空间怎么分 ?     每一类多大的区域 ?  防止浪费...防止不断加书柜.

        2:类别分多细 ?    太细的话...太粗略的话.....

    ----------------------------参考咱们学校的方法--------------------------------

    可以先进行大类的分类,然后按字母顺序排列,最后将索书号一一编辑放入一个软件中,将其信息填入软件(哪个馆区、哪一排、那一层…

    =========================我是大分割线=====================================

    写程序实现一个函数print,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数.

    //循环实现
    #include<stdio.h>
    int main()
    {
        int n,i;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            printf("%d
    ",i);
        }
        return 0;
    }
    //我输入100000的时候程序崩了.
    #include<stdio.h>
    int print(int n);
    int main()
    {
        int n,i;
        scanf("%d",&n);
        print(n);
        return 0;
    }
    int print(int n)
    {
        if(n)
        {
            print((n-1));
            printf("%d
    ",n);
        }
    }

    作为人类你喜欢写递归程序,但是计算机特别不想跑递归.(递归占用空间吓死人.)

    -----------------------------------------上面的递归为什么崩了?---------------------------------------

    上面的递归占用空间太多,以至于在空间吃完之后还想吃空间导致自己爆了.

    ---------------------------------------------------------------------------------------------------------

    ==========================我是大分隔符==================================

    写程序 计算给定多项式在定点X处的值.

    F(x)=a0+a1*x+a2*x+~~~~~~~~+a n-1 *x ^n-1  +a n x^n;

    //很人性化,简单易懂.....但是蠢的要死.
    //其思想是   一个一个相加得出最后的结果
    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int a[11111],x,n,j,b,c,p,i;
        while(scanf("%d",&n)!=EOF)
        {
            for(i=0;i<=n;i++)
            {
                scanf("%d",&a[i]);
            }
            scanf("%d",&x);
            for(p=a[0],i=1;i<=n;i++)
            {
                p=p+a[i]*pow(x,i);
            }
            printf("%d
    ",p);
        }
        return 0;
    }

    --------------------------------------几千年前 秦九韶  就想出来了一个更好的算法下面附上代码---------------------

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int a[11111],x,n,j,b,c,p,i;
        while(scanf("%d",&n)!=EOF)
        {
            for(i=0;i<=n;i++)
            {
                scanf("%d",&a[i]);
            }
            scanf("%d",&x);
            for(p=a[n],i=n;i>0;i--)
            {
                p=a[i-1]+x*p;
            }
            printf("%d
    ",p);
        }
        return 0;
    }

    利用了结合律........

    -------为什么说第二个函数实现的比较好,第一个函数就应该受到鄙视呢?-----下面给出原因-----------

    在程序的运行过程中发现当给的数值比较大的时候    第二个的时间复杂度远远低于第一个函数.

    #include<stdio.h>
    #include<time.h>
    clock_t start ,stop;//clock_t是clock()函数返回的变量类型.
    double duration;//记录被测函数运行时间,以秒为单位
    int main()
    {
        start=clock();//开始计时.
        myfunction();
        stop=clock();//结束计时
        duration=((double)(stop-start)/CLK_TCK);
        //其余的不再计时范围内......
        return 0;
    }

    具体代码自己下去实现...........(如果处理的东西比较少的话系统是捕捉不到时间的   那时候时间就是0.所以你要输入足够多的数字....)

    最后结果显示他们错了一个数量级.第二个程序大概比第一个快10倍.由此可以看出  解决问题的效率和算法的巧妙度有关

    -------------------------------------------------------------------------------------------------------

    所以说了半天 到底啥是数据结构..呵呵 ..自己体会吧....

    汗.还是回来补充一下吧.......

    数据结构

    1:数据结构是数据对象在计算机中的组织方式(类似于上述所讲的  书在图书馆中的存放方式.)

    2:数据对象必定与一系列夹在其上的操作相关联.

       /////完成这些操作所用的方法就叫做算法.

  • 相关阅读:
    java IO流之详细总结
    位运算了解与复习多线程
    java 常见面试题总结(一)
    复习集合框架
    【面试题】java中高以上必会技能
    python-项目流程分析及优化查询方法
    python-day97--django-ModelForm
    python-day97--git协同开发
    python-day96--git版本控制
    python-day91--同源策略与Jsonp
  • 原文地址:https://www.cnblogs.com/A-FM/p/5079966.html
Copyright © 2011-2022 走看看