1989年開業 技術士 佐伯英子(情報工学部門) 文部科学省登録番号 第22082号 日本技術士会会員 東大阪商工会議所会員

≫サンプルプログラム一覧 

オープンソース/C言語サンプルプログラム  バブルソート(整列)

●バブルソートのアルゴリズムを理解するプログラムです。
●並べ替えるデータは、配列に初期値として格納しておきます。
●前後の並べ替えが1回終了するたびに、途中経過を表示します。
 ≫ソースファイルのダウンロード: sort02.c

【問題】
●途中経過を観察して、バブルソートのアルゴリズムを確認してみよう。
●データを20個に増やしてみよう。
●降順に並べ替えるように変更してみよう。

【発展問題】
●このサンプルでは、8回目の整列処理で並べ替えが完了している。
 並べ替えが完了したら、以降の整列処理をしないように変更してみよう。

/******************/
/*  バブルソート  */
/******************/
#include <stdio.h>
#define  MAX  10
void  main( )
{
  int  data[MAX]={ 80,5,36,23,12,100,45,9,1,78 };
  int  n,i,w;

    printf("\n☆バブルソート☆\n");

    printf("\nソート前\n");
    for( i=0; i<MAX; i++ )
      { printf("%d ",data[i]); }

    printf("\n\n途中経過\n");

    for( n=MAX; n>1; n-- )              // 未整列データ数
      {
        for( i=0; i<n-1; i++ )
          {
            if ( data[i]>data[i+1] )    // 次のデータが小さい
              {
                //--入れ替え--
                w=data[i];
                data[i]=data[i+1];
                data[i+1]=w;
              }
          }

        for( i=0; i<MAX; i++ )
          { printf("%d ",data[i]); }
        printf("\n");
      }

    printf("\nソート後\n");
    for( i=0; i<MAX; i++ )
      { printf("%d ",data[i]); }

    printf("\n");
    fflush(stdout);
}
   

※SSL暗号化通信対応

佐伯英子技術士事務所 〒542-0073 大阪市中央区日本橋 1-14-13 サンオフィス日本橋601  E-mail: info@saeki-pe.com