アルゴリズムⅠ・講義メモ3(新)

ソート

・整列のことで小⇒大を「昇順」、大⇒小を「降順」という。
・良く用いられる手法で、データ数、CPUなどの負荷、データの傾向などによって複数の方式から最適なものを選ぶのが基本
・今回はその基礎になるバブルソートを用いる
・バブルソートは交換ソートともいい、仕組みが単純で件数が少ないと速い。
・イメージは「並んだ箱の隣どうしの順序をなおすことを繰返すといつかはできる」
・実際は昇順で末尾に最小値がある場合に最も手間がかかる=要素数-1回の交換が必要。
・よって2重ループで実装できる(後で改良するが)

① 以下をカウンタiで0から要素数-2まで繰返す(つまり要素数-1回繰返す)
 ・以下をカウンタjで0から要素数-2まで繰返す(つまり要素数-1回繰返す)
  ・要素[j]>要素[j + 1]ならば交換する

ソート:フローチャートを描こう

http://ha233.rundog.org/wp-content/uploads/2023/06/sort.zip

ソート:プログラムにしよう

・配列の値は初期化で与えてOK
 例:int[] val = {80,20,10,40,50,60}; //元の1次元配列
・ソート結果の表示を追加すること

作成例

int[] val = {80,20,10,40,50,60}; //元の配列
for(int i = 0; i < val.Length - 1; i++) { //カウンタiで要素数-1回繰返す
    for(int j = 0; j < val.Length - 1; j++) { //カウンタjで要素数-1回繰返す 
        if(val[j] > val[j + 1]) { //隣と降順になっていたら
            var temp = val[j]; //退避してから
            val[j] = val[j + 1]; //交換する
            val[j + 1] = temp;
        }
    }
}
foreach (int i in val) { //配列の全要素について繰返す
    Console.WriteLine(i);
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です