ボードを検索

  • シーケンシャル検索

あまりにも簡単で、説明していません。

  • 二分法(単調)

バイナリ検索:

小規模から大規模まで

以上の検索\(K \)左端の要素を。

while(left<right)
{
mid=(left+right)>>1;
if(x[mid]<k)left=mid+1;
else right=mid;
}

以下の検索\(k個\)右端の要素を。

while(left<right)
{
mid=(left+right+1)>>1;
if(x[mid]>k)right=mid-1;
else left=mid;
}

下行

以上の検索\(k個\)右端の要素を。

while(left<right)
{
mid=(left+right+1)>>1;
if(x[mid]<k)right=mid-1;
else left=mid;
}

以下の検索\(k個\)左端の要素を。

while(left<right)
{
mid=(left+right)>>1;
if(x[mid]>k)left=mid+1;
else right=mid;
}


二値の答え:

最小最大
while(left<right)
{
mid=(left+right+1)>>1;
if(check(mid))left=mid;
else right=mid-1;
}

最大最小
while(left<right)
{
mid=(left+right)>>1;
if(check(mid))right=mid;
else left=mid+1;
}

原理の詳細は:確かではないとの放棄は、潜在的に有用なままに、いくつかの状況を追加する必要があり、無限ループを防ぐために切り捨て。

注:数学的帰納証明可能な最後の\(左=右\) それは、いずれかの出力です。

私より上ではないものの反対のようですので、等しいがあるので\(1 + \)または( - 1 \)\交換可能。

  • サーズのルール

完了するためにピットを出ます。

おすすめ

転載: www.cnblogs.com/May-2nd/p/11610126.html