C Tips: 排序算法:冒泡排序(Bubble sorting)

时间:2022-02-09 21:56:57

冒泡排序是所有排序算法中最简单的,但很遗憾它不是最好的,甚至也不是中等好的,应该算是比较差的。它是稳定排序。它的时间复杂度在平均、最好、最差的情况下均为:O(n2)

代码如下:

void BubbleSort(void** array, size_t count, int(*cmp)(const void *, const void *))
{
size_t i;
size_t j;
void *value;

if (array == NULL || count <= 1)
{
return;
}

for (i = 0; i < count - 1; i++)
{
for (j = count - 1; j > i; j--)
{
if (cmp(array[i], array[j]) > 0)
{
value = array[i];
array[i] = array[j];
array[j] = value;
}
}
}
}
这里的输入参数 int(*cmp)(const void *, const void *) 是一个函数的指针,示例见《 C Tips: 比较函数 int(*cmp)(const void *, const void *)