MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


【VBA】バブルソート
profile-img
投稿者: Nakamaさん
投稿日:2020/05/14 16:45
更新日:2020/05/14 16:58
like-img
分類
技術
テクノロジー
その他
キャリア
運用・保守
投稿内容

今回は、VBAでのバブルソートコードの一つを作成していきます。。

バブルソートは、ある数値列の隣り合う要素の値を比較して条件に応じた交換を行う数列アルゴリズムです。条件とは値の大小関係です。「値の大きい順(降順)」か「値の小さい順(昇順)」にリストを並び替えます。

このソートを実行すると値の大きいまたは小さい要素が浮かびあがってくるように見えることから、バブル(bubble: )ソートと呼ばれます。

 

下記の図の数列にバブルソート処理を実行すると、3行目に左から小さい順で並び替えた結果がされる仕組みです。

 

 

この処理を実行するコードが下記図になります。

  

1.データ数の特定

A行に配列された数値の列番号を取得します。[.End(xlToRight)]A1セルから連続入力セルまでのデータを取得し、[.column]で列番号を数値として返します。

 

2.数列を配列として定義

 配列のインデックスは「0」から始まりますが、「Option Base 1」とモジュール宣言することで、Excelの列番号とインデックス番号を合わせて簡略化します。そして、動的配列を宣言し、要素数を設定します。

 

3.比較、並び替え

隣り合う数字比較し、右が大きい場合はそのまま、左が大きい場合は入れ替えの処理を行う。

イメージ

(4.6.2.1.8.5)tmp() ⇐ 62の場合、6が大きいので「If」の入れ替え処理

(4.‘ ’.2.1.8.5)tmp6

(4. 2.2.1.8.5)tmp6

(4. 2.6.1.8.5)tmp6

 

この処理を繰り返していき、数列の最大値から固定していきます。

固定処理が終わったら、比較範囲「x」を狭めていきながら、同様の処理を実行していきます。

 

4.書き込み

 数列の並び替え処理が終わったら、数列の内容を3行目に書込んでいきます。

 

 

以上でバブルソートのコーディングの紹介を終わります。

ご閲覧頂きありがとうございました。  

 

コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3