• <有序数组>转化为<按二分法遍历顺序排列的数组>(C++实现)


    在进行参数试错时,通常将可能的参数由小到大排列一个个进行测试,这样的测试顺序很多时候不太合理,因此写了一个按二分法遍历顺序排列的算法,通常能更快的找到合适的参数。代码如下:

    /*************************************************
    Function:       // BinarySort
    Description:    // sort array according to the traversal sequence of dichotomy
    Input:          // srcArray
    Output:         // dstArray
    *************************************************/
    void BinarySort(vector<int> srcArray, vector<int>& dstArray)
    {
        int begin = 0, end = srcArray.size()-1;
        int mid, tempBegin, tempEnd;
        vector<Point> intervalList;
        intervalList.push_back(Point(begin,end));
        while(intervalList.size()>0)
        {
            begin = intervalList.front().x;
            end = intervalList.front().y;
            mid = (begin + end)/2;
            dstArray.push_back(srcArray[mid]);
            if(begin <= mid-1)
            {
                tempBegin = begin;
                tempEnd = mid - 1;
                intervalList.push_back(Point(tempBegin,tempEnd));
            }
            if(mid+1 <= end)
            {
                tempBegin = mid+1;
                tempEnd = end;
                intervalList.push_back(Point(tempBegin,tempEnd));
            }
            intervalList.erase(intervalList.begin());
        }
    }

    例如:

    输入srcArray = [10](164,174,184,194,204,214,224,234,244,254)

    输出dstArray = [10](204,174,234,164,184,214,244,194,224,254)

  • 相关阅读:
    PHP_Code_challenge(代码审计)
    超全局变量$GLOBALS
    upload-labs(文件上传)
    CTF bugku 论剑场 web20
    多次Printf()是否使用用同一栈帧的参数?
    (转载于度盘)小迪安全渗透-学习讲义
    SQL数据库操作练习(2)
    .htaccess绕过
    PHP序列化思考(9.14已修改)
    SQL数据库操作练习(1)
  • 原文地址:https://www.cnblogs.com/skyrudy/p/4955466.html
Copyright © 2020-2023  润新知