[お勉強] マージ,クイック,ヒープソーツ
・マージソート
2つのブロックの先頭から小さい方を取り出して,新しいブロックを作るという手順を繰り返す.であってるよね?
1.配列をひとつずつブロックとして区切る.
2.隣り合うブロックの頭を比較し,小さい方をブロックからとりだし,別のバッファに保存する.
3.これをブロックに要素がなくなるまで繰り返す.
4.なくなると,2に戻る.ブロックが配列全体に等しくなると終了する.
・クイックソート
任意の値より大きいか,小さいかで順不同で配列を入れ替え,2分割しまくると,いつのまにか並んでいる?という手法?
1.配列から一つ何かしらの方法で値を選び出す.
2.その値の左側にはその値より小さい値,右側には大きい値だけが存在するように入れ替える.
3.入れ替えると,その値をどちらかに入れて配列を2分割する.
4.2分割した要素,それぞれに対して1に戻り,処理を続ける.
・ヒープソート
ヒープ構造?という2分木を作り,その2分木の各分岐点が最大値となるように2分木の値を入れ替えまくると,ヒープ構造のルート最大値になる.それを利用して並び替える手法.外部にバッファがいらない.であってる・・?
1.・・・・.説明しにくい.
本ソースコードを使用したことによる如何なる損害も製作者は責任を負いません.
http://code.google.com/p/sonson-code/source/browse/#svn/trunk/src/sort