[アルゴリズム]配列内の中枢要素を探し出す


任意のipivot,a[i]>=a[pivot],a[i]>=a[pivot]に対して1つの追加の配列と少量の空間しか使用できないように,整数配列を与えた.
構想
1、一つの配列tを用いて記録し、t[i]はa[0]~a[i]の最大値を記録する
int *t = new int[n];

for(int i = 0, max = ~0; i < n; ++i){

    if(a[i] > max){

        max = a[i];

    }

    t[i] = max;

}

2、aの末尾の首から遍歴し、minを用いてa[i]~a[n-1]の最小値を記録し、min>=t[i]であれば、iが中枢元素であるインデックスを表す
int pivot =-1;

for(int i = n-1, min = 0x7fffffff; i >= 0; --i){

    if(a[i] < min){

        min = a[i];

    }

    if(min >= t[i]){

        pivot = i;

        break;

    }

}

delete[] t;

 
 
本明細書は、知識共有署名-非商業的使用3.0ライセンス契約に基づいて許可される.転载、演繹を歓迎して、しかし本文の署名林が舞い上がるを保留しなければならなくて、もしコンサルティングが必要ならば、手紙を出してください。