////////////////////////////////////////////////////////////////////
/*

	KAB-studio.h


	(C)KAB-studio 1999 - 2004 ALL RIGHTS RESERVED.
		http://www.kab-studio.biz/
		info@mail.kab-studio.biz

	送信日： 2004/04/26(Mon) No.254
	配信数： 2217 ( Mag2 + Pubzine )
	発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                ２００４年４月２６日（月）の更新                */
http://www.kab-studio.biz/index.html

・ほとはーに「 8-1 発見」追加！
　お待たせしました、三人合体ホットハーブ再開です！
　第８話は新キャラが登場します！　って、この人見たことありますが。
[ 三人合体ホットハーブ ]
http://www.kab-studio.biz/Comic/HotHerb/index.html


////////////////////////////////////////////////////////////////////
/*                        ちょお普通な日記                        */
http://www.kab-studio.biz/nikki2/index.html

2004/04/18 (Sun)
　４月表紙壁紙。（作り方色々……割愛）。座椅子と pre-CLANNAD とか来
る。 CLANNAD のコンセプトは楽しみだけど実現できてるか……。恋風があれ
な感じ。今日は情処試験ですね。

2004/04/19 (Mon)
　今日はすごく眠かった。ブラックラグーン３巻購入。 IIS 攻撃用リクエ
ストがうっとおしい。秀丸マクロじゃ消しきれない……。表紙壁紙、微妙な
人気。

2004/04/20 (Tue)
　朝９時１５分に客先へ。その顛末。午前中潰れる。激★店のは素？　それ
とも演出？　せんせいのお時間の萌え〜。今クールのランキング。HD録画は
楽だ。

2004/04/21 (Wed)
　マイペースデバッグ＆ファイルリリースとかデータベースメンテとか。
ゴールデンウィークの予定。ネギま！面白い。今クールはどれもアレだ。

2004/04/22 (Thu)
　バグ５つくらい潰す。テストも大詰め？　８割つまらなくて２割面白い。
アマゾンから３万分来る予定。今はお金余裕あるけど、あとから大変？

2004/04/23 (Fri)
　３０分寝坊。この時期に機能追加……。中国行ってきます。体力的に疲れ
てる。二起脚が限界。今日明日あさっての予定。

2004/04/24 (Sat)
　起きたら１１時半。お昼は秋葉原に行って DVD-R 購入。メロンブックス
で色々購入。そういえばこみパＰＣ版ってやってない……。ベンガルという
カレー店。ゴールデンウィークの予定。吉野家角煮きのこ丼。今日明日の予
定。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
http://www.kab-studio.biz/Novel/Fuga/index.html

■　第十章　剣と魔法　−３−

「俺とおまえとじゃ、体格が全然違うだろ？」
　雅樹は上段に構えて振り降ろす。舞はそれを受ける。
「う”ッ」
　刀とはいえ、重い。
「舞に『力勝負』という選択肢はないんだ」
「それって不利ってことじゃない」
「だから、そう言ってるんだろ？」
　もう疲れた、という表情を見せて刀を鞘に収める。不満そうな表情を見せ
ながら、舞も水の剣を元の水へと戻し、水筒へと返す。
「どんな状況でも勝つ、なんてことは無理なんだ。自分の有利な状況、不利
な状況を把握して、その状況にいかに持ち込むか、ってのが重要なんだ。そ
のくらいわかるだろ？」
　わかっていないのは、雅樹よ……私は、剣であんたに勝ちたい、それだけ
なんだから……。
　不満そうな表情は変えず、
「わかったし、わかってるけど、不利な状況っていうのも体験しておきたい
し、その対処方法も見つけておきたいから、もう少しつきあって」
「たく……」
　雅樹は背中から不満そうな雰囲気を放ちつつ、村へと向かっていった。舞
もそれにゆっくりとついて行く。
「？　次は赤葉様のところか？」
「うん、午後は術を教わるから」
　そうだ、次は気を引き締めなきゃ。
　舞は顔をぱちんと叩いた。
                                                              (続く)

////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 13.18
一番便利・マージソート

「今回は、最後のソート、マージソートについて説明します」
『最後？』
「ソートのアルゴリズムは他にもいっぱいあるんだけど、基本的にはクイッ
クソートとマージソートが使えれば問題ないから」
『クイックソートとマージソート……あ、マージソートは安定ソートなん
だ！』
「そういうこと。 int とかの配列のソートはクイックソートで、構造体や
クラスの配列のソートはマージソートで、っていうのが基本かな」
『でも、マージソートってクイックソートより遅いんでしょ？』
「そんなに遅くないし、場合によってはクイックソートよりも速いよ」
『え、そうなの？』
「クイックソートは左右を入れ替えていくソートだから、元々ある程度きれ
いに並んでいる配列をソートするには向かないんだけど、マージソートはむ
しろ並んでいる方が速くソートできるから」
『そういう場合にはマージソートの方が速いわけね』
「そういうこと。だから、場合によっては全部マージソートでもいいかも
ね」
『でもクイックソートはランタイムにあるから便利……』
「確かに……さて、それではマージソートの仕組みについて説明します。
マージソートは、次のような手順でソートします」

1.全部バラバラにする。
2.隣同士をくっつける。そのとき小さい順にくっつける。
3. 2 を繰り返して、全部ひとつになるまで続ける。

『……これだけ？』
「そう。仕組み的にはクイックソートより簡単だと思うよ。ちなみに、この
処理の中の〈くっつける〉ことを merge って言います」
『だからマージソート、ね』
「そういうこと。じゃ、実際に手順を追ってみようか」

4 9 3 5 8 

『前のと同じのね』
「これをソートします。まず、全部バラバラにします」

4     9     3     5     8 

「次に、隣同士をマージします」
『マージする、つまりくっつけるのね』
「その際、小さい方は左側にします」

(4,9) 3 (5,8)

『む、なんかそのままね』
「たまたま左右そう並んでるからね。
『あと真ん中の 3 があぶれちゃったけど』
「これは次にマージするから、今は放っておきます。では、その次の段階」

(3,4,9) (5,8)

「 (4,9) と 3 をマージしました。 (5,8)は隣がないので放っておきます」
『 3 が一番左に来てるね』
「小さい方を左に持ってくるからね。では最後に、このふたつをマージしま
す」

(3,4,5,8,9)

「はい、ソートできました」
『……』
「う、何怖い顔で」
『……簡単すぎ！　なんかだましてるでしょ！』
「騙してるわけじゃなくて……タネというか、ポイントは、くっつけると
ころ、つまりマージ。たとえば」

(3,4,9)
(5,8)

「このふたつをくっつける場合」
『そうよ、これ、くっつけるって言ったけど、大変じゃないの？　小さい順
なんだから』
「ところがそうでもないんです。なぜかというと」

(3,4,9)

「も」

(5,8)

「も、すでに小さい順にソート済みだから」
『小さい順に並んでいると……簡単？』
「簡単なんです。この手順も追ってみようか」

(3,4,9)
(5,8)
　↓
[,,,,]

「という形でマージしていきます。まず１回目。この中から一番小さい数
は？」
『 3 。あ……そっか、もうこのふたつ、ソートされてるから、一番小さな
数が絶対に一番左に来てるんだ……』
「そういうこと。それがポイントなんです。一番小さな数は、 3 と 5 を比
較して、 3 」

(4,9)
(5,8)
　↓
[3,,,,]

「次に小さな数は、 4 と 5 を比較して 4 」

(9)
(5,8)
　↓
[3,4,,,]

「と、常に一番左にある〈一番小さな数〉のふたつを比較するだけでいいん
です」
『ソートの時は全部見ていかなきゃいけなかったけど、ソート済みだとそれ
が必要ない、ってわけね』
「残りも同じように見ていきます。 9 と 5 だと 5 だから」

(9)
(8)
　↓
[3,4,5,,]

「 9 と 8 だと 8 だから」

(9)
()
　↓
[3,4,5,8,]

「そして残った 9 」

()
()
　↓
[3,4,5,8,9]

『マージが終わったら、もうそのときソートもされてるわけね……』
「マージソートの早い理由はこれ。常にソート済みにしておくことで、全体
を見る、という処理をしないで済むわけです」
『これは早そう……』
「それに、このソートは左右をそのまま残しておくから」
『安定ソート！』
「ってわけ」
『元々の位置はそのままだものね』
「そう、それも重要」
『？』
「ごちゃごちゃにかき混ぜるクイックソートに比べて、マージソートはその
ままの並び順をうまく活用するから、〈元々ある程度ソートされてる〉場合
にかなり早くソートできるんです」
『マージがそのままできるもんね』
「こういったメリットがあるから、クイックソートは必要ないかも」
『マージソートのデメリットは？』
「メモリを多く使うこと。今まで紹介したソートは元々の配列を利用してい
たけど、今回はそうできないんです」
『どして？』
「マージの時に別の領域が必要になるから」

(3,4,9)
(5,8)
　↓
[,,,,]

『あ”』
「まぁプログラム的には上の () の領域を作ることになるんだけど」
『分割した方ってこと？』
「そう。分割した値を動的に作った配列に入れておいて、マージするときに
元の配列に戻していく、っていう形になります」
『動的に作る、ってことは、 malloc() とか new とか使うってこと？　め
んどくさそう……』
「確かにそうかも。でもこれも、一度作っちゃえば使い回しできるから、そ
れほど大変じゃないと思うよ」
『……なんか、マージソートができればもう他には必要ないように聞こえる
けど』
「実際そうだと思うよ。マージソートの関数をちゃんと作っておけば、もう
それだけで十分かも」

/*
    Preview Next Story!
*/
『仕組みがわかったらコーディング、ね』
「というわけで次回はマージソートのコードを紹介します」
『……あらかじめ訊くけど』
「ランタイムはないよ」
『うー』
「というわけで次回」
＜ Version 13.19 マージソートのコーディング ＞
『につづく！』
「まぁ他の言語だとあらかじめ用意されてたりするんだけどね」
『え！？　じゃあそっちに乗り換えるー！！』
「じゃあ #pragma twice が最終回になったらね」
『え”……』


////////////////////////////////////////////////////////////////////
/*                ２００４年５月３日（月）の更新                  */
http://www.kab-studio.biz/index.html

・ほとはーに１話追加予定
　ほとはーに１話追加予定。当然これからは毎週追加です。


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.biz/nikki2/
・購読登録を解除したいときにはこのページで行なってください。
http://www.mag2.com/m/0000012198.htm
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.biz/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.biz/Info/MailMagazine/

    (C)KAB-studio 1999 - 2004 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

