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

算法的体现

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


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

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

#include 
#include 
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 
#include 
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 
#include 
#include 
#include 
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语言))