2020-01-05

anond:20200105193554

ちなみに要素数が1でかつ定数の場合という特殊解があり

結論を優先して言うと

for(int i=0; less(i,1-1) ; ++i){

for(int j=0; less(j,1-1) ; ++j){

のようなダブルループになるが

これは

結果論として初期値0 初回比較 i<0となるため 0<0となりループ回数0であることがコンパイル時に判別可能な式となる

したがって、最適化がかかっていた場合 (当たり前だが)ソートそもそもforループごと最適化無効化され1行も実行されない。

まり素数が1のときの実行速度は実質0となる。

まり素数が1のとき素数変数が定数と等価であるバケツソートは最速のソートに分類される。

 

こういった例外があることを知っておくことは重要である

記事への反応 -
  • ソートの話。 まずはバケツソートがわかりやすい。   要素数が1や2の場合 10の場合 100の場合 100万件の場合と考えていくといい。   という問題がすべての基本で こ...

    • ちなみに要素数が1でかつ定数の場合という特殊解があり 結論を優先して言うと for(int i=0; less(i,1-1) ; ++i){ for(int j=0; less(j,1-1) ; ++j){ のようなダブルループになるが これは 結果論として初...

      • かつ定数としたのは変数である場合も、慎重に最適化を行えば検出可能であるが 意味論的に変数は変数であるため最適化を期待しないからであり 定数は意味論的に定数である事を前提に...

    • この問題をきちんと教えるかどうかで、その後の問題の躓きやすさがおおきくかわるから、これはしっかりおしえないといけない。   簡単そうに見えるけど、こんなことでも、こういう...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん