[OI] C ++ STL予備ソートおよび検索

パープル各地からの書籍が、比較的単純で話して本の内容は、補助的なノートのビットを行います。


 

ソート(並べ替え機能)

ヘッダ<アルゴリズム>

構文:ソート(開始、終了、CMP);

開始、終了は、CMPはする必要はありませんしなければなりません。

パラメータ

(1)開始をソートする配列の開始アドレスを示します。
(2)アレイの端部側は、次のアドレスを表します。
、デフォルトの上昇を充填する所定の時間をソートするための方法(3)CMP。
高速ロウ:選び分けます 時間計算量は、N *のLOG2(n)は、高効率です。
デフォルトの昇順(CMPパラメータが少ないです<>())
降順を達成するために、デフォルトでは、CMPではない、埋める大きい<データ型>() 手段降順)
これにより昇順にソート標的配列[N]:ソート(A、+ N-A)。
(ことが理解さ:すなわち、開始から終了まで、n個の標的配列の先頭アドレス)
ターゲットコンテナのためのベクター、使用:ソート(v.begin()、v.end())。
データ型は自己定義された順序付けを与える場合はさらに、我々は(過負荷)<演算子、およびCMPを渡すので定義する必要があります。

第二に、検索(バインドクラス)
配列をソート終了し、検索の前提を忘れないでください!(原則はバイナリ検索です)
記事CSDNブロガーを引用すると:

小さな大規模なソートのアレイでは、

LOWER_BOUND(開始、終了、NUM):数以上第二分探索NUMの端-1位置にアレイ内の位置から始まり、番号が返される存在しないアドレスの末尾を見つけるために戻りました。配列中に見出さ添え字を得るために、リターンアドレスの開始アドレスを減算することによって始まります。

UPPER_BOUND(NUM、末端の開始):最初の数より大きいバイナリサーチNUMの末端1位に、アレイ内の位置から始まり、アドレスが終了戻る存在しない見つけるために、この数を返します。配列中に見出さ添え字を得るために、リターンアドレスの開始アドレスを減算することによって始まります。

ソートされた配列、過負荷LOWER_BOUND()とUPPER_BOUND降順で、()

LOWER_BOUNDは(エンド、NUM、大きな<タイプ>()開始):以下NUMの数に等しいのバイナリサーチの終了-1位に、アレイの位置を開始し、リターンをデジタルアドレスを見つけるから、終わりのリターンが存在しません。配列中に見出さ添え字を得るために、リターンアドレスの開始アドレスを減算することによって始まります。

UPPER_BOUND(開始、終了、NUM、大きな<タイプ>()):以下復帰の数よりも、第二分探索NUMの端-1位置にアレイ内の位置から戻された存在しないアドレスの終わりを見つけるために、その数を始めます。配列中に見出さ添え字を得るために、リターンアドレスの開始アドレスを減算することによって始まります。

---------------------
著者:brandong
出典:CSDN
オリジナルます。https://blog.csdn.net/qq_40160605/article/details/80150252

LOWER_BOUNDでは、彼が探していることである最初のxに等しいよりも大きい数、その後、状況はリターンが必ずしも正しくない場合でも、見つけることができません。だから、それを再度判断頭に戻ります。

INT P = LOWER_BOUND(A + N、X) - ; //インデックスは、このとき得られました

([P] == x)の場合....

おそらくそう、と不完全。出会いの後、などが追加されます。

おすすめ

転載: www.cnblogs.com/nowonder/p/STL_search.html