第三章 堆栈

来源:互联网 发布:淘宝小二介入退款流程 编辑:程序博客网 时间:2024/06/14 04:06

在网上看到一个题目如下:

现有一个数组A和数组B,查找A中的元素是否存在于B中,如果存在于B中,记录第一次该数出现在B中的位置。

我想到的笨办法,就是把A中的数取出来一个个和B中的比较并记录,下面代码是网上别人给出的算法,会快很多,我在linux下测试,快了大概三个数量级。

    struct  timeval  start_1;    struct  timeval  end_1;    unsigned long timer;    gettimeofday(&start_1,NULL);    /*上面代码是记录程序开始时间*/    /*以下是程序主要代码*/    int temp[ARRAY_MAX] = {0};    for(i=0; i<ARRAY_MAX; i++)    {        temp[b[i]] = i;    }    for(i=0; i<ARRAY_MAX; i++)    {        if (temp[a[i]])            c[i] = temp[a[i]];    }    /*程序主要代码结束,一下是记录程序结束时间*/    gettimeofday(&end_1,NULL);    timer = 1000000 * (end_1.tv_sec-start_1.tv_sec)+ end_1.tv_usec-start_1.tv_usec;    printf("[check_a_from_b_2]timer = %ld us\n",timer);
0 0