yProcessingClub

すみません、許してください

アルゴリズムイントロダクション第1巻 挿入ソート

買ってきたけど早くも挫折しそう。 ひとつひとつ書いてくことにする。

http://stackoverflow.com/questions/6788987/cant-get-insertion-sort-from-introduction-to-algorithms-3rd-ed-right-where-is
ソースコードはここから拝借。

//挿入ソート
INSERTION-SORT(A)
    for j = 2 to A.length
        key = A[j]
        i = j - 1
    
    while (i > 0 and A[i] > key)
        A[i + 1] = A[i]
        i = i - 1
    A[i + 1] = key


//A = {5, 2, 4, 6, 1, 3}とする。


////////////////////////////////////////////////////////////////////////////


INSERTION-SORT(A)
    for j = 2 to A.length
    // j = 2
        key = 2 //key = A[j]
        i = 1   //i = j - 1
    
    while (i = 1, A[1] = 5 > key よりtrue) //(i > 0 and A[i] > key : true)
        A[2] = A[1] = 5 //A[i + 1] = A[i]
        // A = {5, 5, 4, 6, 1, 3}となった。
        i = 0       //i = i - 1
        //i < 0よりwhile抜ける

    A[1] = 2 //A[i + 1] = key

    // A = {2, 5, 4, 6, 1, 3}となった。




INSERTION-SORT(A)
    for j = 2 to A.length
    // j = 3
        key = 4 //key = A[j]
        i = 2   //i = j - 1

    while (i = 2, A[2] = 5 > key よりtrue) //(i > 0 and A[i] > key : true)
        A[3] = A[2] = 5 //A[i + 1] = A[i]
        // A = {2, 5, 5, 6, 1, 3}となった。
        i = 1       //i = i - 1
        //A[1] = 2よりwhile抜ける

    A[2] = 4 //A[i + 1] = key

    // A = {2, 4, 5, 6, 1, 3}となった。



INSERTION-SORT(A)
    for j = 2 to A.length
    // j = 4
        key = 6 //key = A[j]
        i = 3   //i = j - 1

    while (i = 3, A[3] = 5 < key よりfalse) //(i > 0 and A[i] > key : true)

    A[4] = 6 //A[i + 1] = key

    // A = {2, 4, 5, 6, 1, 3}となった(変化なし)


INSERTION-SORT(A)
    for j = 2 to A.length
    // j = 5
        key = 1 //key = A[j]
        i = 4   //i = j - 1

    while (i = 4, A[4] = 6 > key = 1 よりtrue) //(i > 0 and A[i] > key : true)
        A[5] = A[4] = 6 //A[i + 1] = A[i]
        // A = {2, 4, 5, 6, 6, 3}となった
        i = 3       //i = i - 1

    while (i = 3, A[3] = 5 > key = 1 よりtrue) //(i > 0 and A[i] > key : true)
        A[4] = A[3] = 5 //A[i + 1] = A[i]
        // A = {2, 4, 5, 5, 6, 3}となった
        i = 2       //i = i - 1

    while (i = 2, A[2] = 4 > key = 1 よりtrue) //(i > 0 and A[i] > key : true)
        A[3] = A[2] = 4 //A[i + 1] = A[i]
        // A = {2, 4, 4, 5, 6, 3}となった
        i = 1       //i = i - 1

    while (i = 1, A[1] = 2 > key = 1 よりtrue) //(i > 0 and A[i] > key : true)
        A[2] = A[1] = 2 //A[i + 1] = A[i]
        // A = {2, 2, 4, 5, 6, 3}となった
        i = 0       //i = i - 1
        //while(false)になった

    A[1] = key = 1 //A[i + 1] = key

    // A = {1, 2, 4, 5, 6, 3}となった


INSERTION-SORT(A)
    for j = 2 to A.length
    // j = 6
        key = 3 //key = A[j]
        i = 5   //i = j - 1

    while (i = 5, A[5] = 6 > key = 3 よりtrue) //(i > 0 and A[i] > key : true)
        A[6] = A[5] = 6 //A[i + 1] = A[i]
        // A = {1, 2, 4, 5, 6, 6}となった
        i = 4       //i = i - 1

    while (i = 4, A[4] = 5 > key = 3 よりtrue) //(i > 0 and A[i] > key : true)
        A[5] = A[4] = 5 //A[i + 1] = A[i]
        // A = {1, 2, 4, 5, 5, 6}となった
        i = 2       //i = i - 1

    while (i = 3, A[3] = 4 > key = 3 よりtrue) //(i > 0 and A[i] > key : true)
        A[4] = A[3] = 4 //A[i + 1] = A[i]
        // A = {1, 2, 4, 4, 5, 6}となった
        i = 2       //i = i - 1

    while (i = 2, A[2] = 2 < key = 3 よりfalse) //(i > 0 and A[i] > key : true)


    A[3] = key = 3 //A[i + 1] = key

    // A = {1, 2, 3, 4, 5, 6}となった

j = 5, 6のときが動きが分かりやすかった。
ある点(A[j])をkeyとして保存しておいて、その左の点(A[j-1])の値をコピーする。
そうやって、ある値を右にコピーするってのを繰り返していく。

んで、ある値がkeyより小さくなったらそこにkeyを入れる。

A = {1, 2, 4, 5, 6, 3}
key = 3とする。

A = {1, 2, 4, 5, 6, 6}
左の点の値をコピー

A = {1, 2, 4, 5, 5, 6}
左の点の値をコピー

A = {1, 2, 4, 4, 5, 6}
左の点の値をコピー

A = {1, 2, 3, 4, 5, 6}
2 は keyより小さいので、ここにkeyを入れる。

ここまで書いてみて気づいたんだけど、これらを簡潔にまとめたのがテキストp.15の図2.2なんだなぁ。(「挿入ソート」でイメ検すると出てくる図ね)

挿入ソート - Google 検索

図見てもまるで理解できずここまで一つ一つ追っていかないと分からないの恥ずかしい極みだけど、まぁいいか
それより今年の4月に社会人になってプログラマとしてお金をいただいてきたのに、今までアルゴリズムをまったく勉強しなかったことのほうが色々とアレ。 来年新入社員が入ってくるまでに多少は成長しておかんと。

ゆゆ式北米版よさそう

de0.hatenablog.com

 

ゆゆ式の会話、全体的にハイコンテクストな上に語感を重視するような箇所も多いので、どう考えても日本語以外への翻訳がかなり困難に思える。 

 

 

私はゆゆ式BDBOX(国内版)持ってるけど、上記の記事読むと英語字幕のも見てみたくなった。

今度買おっと。

観艦式に行った 海上自衛隊観艦式2015 その3

観艦式の写真!

 

観艦式に行った 海上自衛隊観艦式2015 その1 - yProcessingClub

観艦式に行った 海上自衛隊観艦式2015 その2 - yProcessingClub

 

f:id:Yuri-Processing-Club:20151015215016j:plain

潜水艦3隻。

 

続きを読む

観艦式に行った 海上自衛隊観艦式2015 その2

観艦式に行った 海上自衛隊観艦式2015 その1 - yProcessingClub

 

観艦式の写真!

今回は航空機と祝砲。

 

f:id:Yuri-Processing-Club:20151014223428j:plain

P-3C

軍事には疎いので名前間違ってるかもしれないので注意。

 

続きを読む