寻找单模序列的顶点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寻找单模序列的顶点相关的知识,希望对你有一定的参考价值。

问题:

令A[1..n]是一个由n个数所组成的数组。序列A[1], A[2], … , A[n]被称为是单模的(unimodal),当且仅当存在顶点序号1≤p≤n,使得数组的元素从A[1]、A[2]开始到A[p]单调增加,而从A[p]、A[p+1]开始到A[n]则单调下降。
对于一个给定的单模序列A[1], A[2], … , A[n],请找出其顶点序号p。设计一个求解此问题的算法并分析其最坏时间复杂性。

算法设计:

1.最简单易懂无非就是顺序便利整个序列,判断是否为递减并结束遍历。

2.分治算法:

  我们可以将序列分为两部分,其中我们发现序列的前一部分是单调递增,后一部分是单调递减。所以我们将序列从中间分为两部分(i=(1+n)/2),根据A[i-1],A[i],A[i+1]的值判断定点在哪一部分,然后进行递归调用。

伪代码:

find(int a,int b){
    int i=(a+b)/2;
    if((A[i]-A[i-1]>0)  && (A[i+1] -A[i]>0))
            find(i,b);
    else if((A[i]-A[i-1]<0)  && (A[i+1] -A[i]<0))
            find(a,i);
    else return i;

最坏时间复杂度:

  算法的深度为logn,在最坏的情况下,则算法遍历到最下面一层,每层只需判断中点处的情况则总复杂度为0(log n)。

以上是关于寻找单模序列的顶点的主要内容,如果未能解决你的问题,请参考以下文章

带有顶点/片段着色器的光。使用不同的变量。 (openGL)

全单模矩阵

损坏的顶点和片段着色器

Shader2.0的顶点着色器和片段着色器

顶点

片段着色器是不是处理来自顶点着色器的所有像素?