バブルソートアルゴリズムのc言語実装



バブルソート(BubbleSort)の基本概念は、隣接する2つの数を順番に比較し、小数を前に、大数を後ろに置くことです.すなわち、1回目:まず1番目と2番目の数を比較し、小数を前に、大数を後にします.
次に2番目の数と3番目の数を比較し、小数を前にし、大数を後にして、最後の2つの数を比較し、小数を前にし、大数を後にします.これで1回目が終わり、最大の数を最後にしました.
第2回目:第1対数から比較を開始し(第2の数と第3の数の交換により、第1の数が第2の数より小さくならない可能性があるため)、小数を前にし、大数を後にして、最後から第2の数(最後から第1の位置で最大)まで比較し、第2回目が終了し、最後から第2の位置で新しい最大数を得る(実は数列全体で2番目に大きい数です).
このようにして、最終的にソートが完了するまで、以上の手順を繰り返します.
c言語は以下のように実現される.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void bubble_sort(int value[], int length)
{
 int i = 0;
 int j = 0;
 int temp;
 for(i = 1; i < length ; i++)
 {
  for(j = 0; j< length - i; j++)
  {
   if (value[j] > value[j+1])
   {
    temp = value[j];
    value[j] = value[j + 1];
    value[j+1] = temp;
   }

  }
 
 }


}
int main()
{ 
 int value[8] = {1,10, 9, 20,29, 3, 10, 5};
 int i = 0;
 int length = 8;

 printf("Before:
"); for(i =0; i < length; i++) { if(i == length-1) printf("%d
", value[i]); else printf("%d\t", value[i]); } bubble_sort(value, length); printf("After:
"); for(i =0; i < length; i++) { if(i == length-1) printf("%d
", value[i]); else printf("%d\t", value[i]); } return 0; }