冒泡排序的基本思想:
从前往后两两判断并交换,把最大的交换到最后面,然后向左缩小无序区间。
- 算法如下:
void BubbleSort(DataType* a, size_t n)//冒泡排序
{
assert(a);
for (size_t end = n; end > 0; --end)//减小区间
{
int flag = 0;
for (size_t i = 1; i < end; i++)//一趟选出最大的一个
{
if (a[i - 1]>a[i])
{
Swap(&a[i - 1], &a[i]);
flag = 1;
}
}
if (flag == 0)
break;
}
}
void TestBubbleSort()
{
DataType a[] = { 2, 5, 6, 9, 8, 3, 1, 0, 7, 4 };
BubbleSort(a, sizeof(a) / sizeof(DataType));
PrintfBuff(a, sizeof(a) / sizeof(DataType));
}