美文网首页
数据结构(二)(C语言)

数据结构(二)(C语言)

作者: 长风留言 | 来源:发表于2019-08-10 15:43 被阅读0次

    算法的体现

    利用时间换取空间,这是我们在上一篇文章介绍的,那么,怎样的算法才是一个好的算法呢,每个人的思维都不一样,那么怎么去衡量这个算法怎么样,那么这篇文章我们就可以通过具体的数据给大家一个直观的认识。


    通过编程来实现1-1/x+1/xx⋯*

    分析:对于上面这个数学问题,为何说它是数学问题,因为有一定的规律,我们可以这么看,把第一项拿开,那么就是-1/x+1/xx-1/xxx...;那么我们可以看到,后面的一项就等于前面一项-1/x;所以,我们可以进行编程实现。不过我们还需要把它所执行的时间也给计算出来。

    #include <stdio.h>
    #include <sys/timeb.h>
    int main(int argc, const char * argv[]) {
        struct timeb startTime,endTime;
        long time;
        double x,sum = 1,sum1;
        int i,j,n;//n代表的是有多少个x相乘,就是后面的项数
        scanf("%lf %d",&x,&n);
        ftime(&startTime);
        for (i = 1; i <= n; i++) {
            sum1 = 1;
            for (j = 1; j <= i; j++) {
                sum1 = sum1*(-1.0/x);
            }
            sum += sum1;
        }
        ftime(&endTime);
        time = (endTime.time - startTime.time)*1000+(endTime.millitm - startTime.millitm);
        printf("sum = %lf time = %ld\n",sum,time);
        return 0;
    }
    

    运行结果

    输入的x = 150 n = 10000,


    运行结果

    执行出来的效果,可以看出的时间是233ms

    #include <stdio.h>
    #include <sys/timeb.h>
    int main(int argc, const char * argv[]) {
    //这是时间的一个结构体,里面包含了时间相关属性
        struct timeb startTime,endTime;
        long time;
        double x,sum =1,sum1 = 1;
        int i,n;
        scanf("%lf %d",&x,&n);
        ftime(&startTime);//开始计时
        for (i = *0; i <= n; i++) {
            sum1 = -1.0/x;
            sum +=sum1;
        }
        ftime(&endTime);
        //时间是多少毫秒
        time = (endTime.time - startTime.time)+(endTime.millitm - startTime.millitm);
        printf("sum = %lf time = %ld\n",sum,time);
    }
    

    运行结果

    输入的x = 150 n = 10000,


    运行结果

    执行出来的效果,可以看出的时间是0毫秒


    注意

    通过上面的例子,我们可以看出,实现一个功能有很多种方式,但是每一种方式所需要的时间是不同的,那么好的算法呢就是时间越短越好,所以,第二种方式,它就是一种好的算法。对于上面的输出的时间,还和系统硬件有一定关系,如果是同等条件下,时间越少,算法越精致。


    对于C语言来讲,其实C语言是一个很标准的语言,但是就是由于太过于标准了,所以有些实现会很麻烦,那么开发人员这个时候脑洞打开,让C语言在标准的同时,还能拓展和延伸。

    #include <stdio.h>
    #include <limits.h>
    #include <aio.h>
    #include <stdlib.h>
    int a(int i){
        if(i == 1){
            printf("退出程序\n");
            exit(1);
        }else{
            return i;
        }    
    }
    int main(int argc, const char * argv[]) {    
        printf("%d\n",INT_MIN);
         printf("%d\n",INT_MAX);
        int i;
        scanf("%d",&i);
        printf("a(i) = %d\n",a(i));
        exit(0);
    }
    

    对于算来讲,在进行算法讲解,我们会依托数据结构来呈现出。本篇文章就告一段落,下篇文章,我们就深入的去学习常见数据结构类型。本篇文章如果有错,欢迎大家指正,非常感谢。

    相关文章

      网友评论

          本文标题:数据结构(二)(C语言)

          本文链接:https://www.haomeiwen.com/subject/oqurjctx.html