第三章 堆栈

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

现有一个数组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);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值