バブルソートアルゴリズムの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;
}