C言語:並び替え(バブルソート)

photo credit: Bubbly bliss via photopin (license)

バブルソートは先週習って、今週はポインタを学習しているのですが、バブルソートの復習をしておこうと思います。

バブルソート(昇順)の大まかな手順。

  1. 配列の一番最後の値とその前を比較。
  2. 小さければ入れ替え。
  3. 順に比較していき、配列の一番先頭(小さいもの)を確定。
  4. それを順に繰り返して、全部の値を確定。

以下、今日の復習です。

「5, 20, 4, 15」という配列を昇順で並び替え

結果表示

4 5 15 20

ソース

#include<stdio.h>

int main(void)
{   
    /* 初期化 */
    int hai[]={5,20,4,15};
    int temp;
    int i,j;

    /* 昇順(小さい順)で並び替え */
    for(i=0;i<=3;i++)
    {
        for(j=3;j>i;j--)
        {
            if(hai[j]<hai[j-1])
            {
                temp=hai[j];
                hai[j]=hai[j-1];
                hai[j-1]=temp;
            }
        }
        printf("%d ",hai[i]);
    }

    return 0;
}