エクセルVBAで挿入ソート
挿入ソート、InsertionSort
今までのバブルソートからコムソートは交換して並べ替えていた
挿入ソートは名前の通り挿入して並べ替えていく
3,5,6って整列されているところに4が来たら3と5の間に4を挿入
挿入される側は整列されている必要があるので、配列でいったら左側から順番に比較挿入していけばいいことになる
5,3,6,4のときは
左から見ていくと5のところに3が来たので5の前に3を挿入
次は3,5のところに6なので5の後ろに挿入
次は3,5,6のところに4は3と5の間に挿入
まとめると
交換していくバブルソートよりこっちのほうが直感的かなあ、本棚の本を整列するときはこんな感じ
適当な変数tmpに挿入する数値を入れておいて、 tmp = v(i) これを右から左の数値と比較していって、 If v(j) > tmp Then 比較数値>tmpなら比較数値を右へコピー、 v(j + 1) = v(j) 比較数値>tmpじゃなければ内側のループを抜ける、 Exit For 最後にtmpを挿入して、 v(j + 1) = tmp 次の外側ループへ
コードにするとバブルソートとあんまり変わらないんだよねえ、とくにtestBubble3とはかなり似ている
処理時間計測
今までと同じように1万件のランダム数値を整列
今までのまとめ
コムソートだけ異次元
前回の記事
エクセルVBAでコムソート ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14795895.html
次回、挿入ソートの改良型シェルソート
エクセルVBAでシェルソート ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/14801061.html
まとめ
エクセルVBAで、ソートアルゴリズムとデータの違いによるソート処理時間比較 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/14836198.html