バブルソート(Bubble sort)
2つの要素を比べては交換、比べては交換して、交換できる要素がなくなれば終了。同じ要素の並びは変わらない安定ソート。
template <typename TElement, typename TSize>
void BubbleSort(TElement * data, const TSize size)
{
bool swapped = false;
do
{
swapped = false;
const TSize max = size - 1;
for (TSize i = 0; i < max; ++i)
{
TElement diff = data[i] - data[i+1];
if (diff > 0)
{
data[i ] = data[i+1];
data[i+1] = diff + data[i];
swapped = true;
}
}
} while (swapped);
}
これでOK?
交換するコードが、味噌味。