排序算法之——冒泡排序
冒泡排序因其在排序中相邻元素不断交换,一些元素被换到后面,看起来像元素在冒泡一样而得名。
算法原理:
冒泡排序的原理(以递减为例)是每次从头开始比较相邻的元素,如果后面的比前面的小,则交换。循环完毕后再次从头扫描,直到某次扫描没有元素可交换,程序完成。
时间复杂度:
O(n^2)
空间复杂度:
O(1)
稳定性:
没有发生隔几个的数据交换,所以稳定
代码实现
void BubbleSort(int* arr, int len)
{
for (int i = 0; i < len - 1;++i)
{
bool flag = true;//优化
for (int j = 0; j < len - 1;++j)//len - 1 - j每经过一趟,下一次可以少比较一次数据
{
if (arr[j] > arr[j + 1])
{
Swap(&arr[j], &arr[j + 1]);
flag = false;
}
}
if (flag)
{
return;
}
}
}
交换函数Swap的实现:
void Swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
程序运行截图: