【C言語】バブルソート/int array[10]を昇順にソートするプログラム

C言語 研修プログラム

ソフトウェア会社の研修時代に作成したプログラムです。
参考になればうれしいです。

今回の研修プログラムは、バブルソートというアルゴリズムを使用してデータを昇順に整列するという内容です。

バブルソートは「隣合ったデータを比較して逐次入れ替えていく」という処理で、単純選択法に比べて高速にデータを整列することが出来ます。

昇順に整列するバブルソートの処理の流れは大きく3つです。
・先頭から順番に隣のデータと大小関係を比較する。
・隣の要素よりも大きければ入れ替える。
・配列の要素数ー1だけ上の処理を繰り返す。

スポンサーリンク

Sample Code

/*****************************************************************************
バブルソート int array[10]を昇順にソートするプログラム

<lesson_013.c> ver1.00
------------------------------------------------------------------------------
作成日:
作成者:

*****************************************************************************/
//---ヘッダファイル---
#include <stdio.h>

/*****************************************************************************
---main関数---
******************************************************************************/
int main(void)
{
  int i;
  int j;
  int w = 0;     //入れ替え用変数
  int arrayNum;  //配列の要素数

  int array[] = {1, -1, 3, 89, 5, 11, 66, 8, 9, 10};


  /* arrayNumに配列要素数を代入 */
  //配列array全体のサイズを1個の要素サイズで割ると要素数が求められる。
  arrayNum = sizeof(array) / sizeof(array[0]);

  //確認のために出力
  printf("sizeof(array):%d\n", sizeof(array));
  printf("sizeof(array[0]):%d\n", sizeof(array[0]));
  printf("arrayNum:%d\n", arrayNum);

  /* ソート前の配列を出力する */
  printf("ソート前の配列:");
  for(i = 0; i < arrayNum; i++)
  {
    printf("%3d", array[i]);
  }
  printf("\n");

  /* 最後の1つはソートしないのでi < (arrayNum - 1)が終了条件 */
  for(i = 0; i < (arrayNum - 1); i++)  //0~8まで
  {
    /* 最大値を隣の要素と比較しながら配列後端まで移動 */
    for(j = 0; j < arrayNum - 1; j++)
    {
      if(array[j] > array[j + 1])  //隣の要素よりも大きい場合
      {
        w = array[j];            //array[j]を入れ替え用変数wに退避
        array[j] = array[j + 1]; //array[j]にarray[j + 1]を代入
        array[j + 1] = w;        //退避させていたwをarray[j + 1]に代入
      }
    }
  }

  /* ソート後の配列を出力する */
  printf("ソート後の配列:");
  for(i = 0; i < arrayNum; i++)
  {
    printf("%3d", array[i]);
  }
  printf("\n");

return 0;
}

実行例

その他:研修で作成したC言語プログラム

その他のC言語プログラムはこの投稿にまとめてあります!

C言語の初心者用コードなので是非活用して下さい。
【C言語】研修 サンプルプログラム集

コメント

タイトルとURLをコピーしました