码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-11-11 11:15:35      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

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

/*************************************************
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)

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

标签:

原文地址:http://www.cnblogs.com/skyrudy/p/4955466.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!