输出波峰波谷

/*输出波峰波谷
*/
void printArrPeakValley(const int* arr, int len )
{
    //
    vector<int> iv(arr,arr+len);
    vector<int> result;
    result.push_back(iv[0]);

    int temp=iv[0];
    int maxDis=iv[0];
    vector<int>::size_type i=1;
    int flag=0;
    for(;i<iv.size();)
    {
        while(i<iv.size() && temp == iv[i] )
        {
            flag=0;
            i++;
        }
        while(i<iv.size() && temp < iv[i] )
        {
            flag=1;//递增标记
            temp=iv[i];
            i++;
        }
        if(flag==1)
        {
            result.push_back(iv[--i]);
            i++;
        }
        while(i<iv.size() && temp > iv[i])
        {
            flag=2;//递减标记
            temp=iv[i];
            i++;

        }
        if(flag==2)
        {
            result.push_back(iv[--i]);
            i++;
        }
    }
    for(vector<int>::size_type j=0; j<result.size(); j++)
        cout << result[j] << " ";
}
posted @ 2012-09-29 08:44  logzh  阅读(531)  评论(0编辑  收藏  举报