思想:两两相邻的比较,值更大的则朝后移动,每一次遍历数组则可以确定一个最大的数值。
//最好:O(N)
//最坏:O(N^2)
void BubbleSort(int* a, int n)
{
for (int end = n; end > 0; --end)
{
int exchange = 0; //设置一个参数,以出现完全有序的情况下,避免仍然遍历
for (int i = 1; i < end; ++i)
{
if (a[i - 1] > a[i])
{
Swap(&a[i - 1], &a[i]);
exchange = 1; //若交换,则改变exchange的值
}
}
if (exchange == 0)
{
break;
}
}
}
冒泡排序的特性总结:
1.冒泡排序是一种非常容易理解的排序
2. 时间复杂度:O(N^2)
3. 空间复杂度:O(1)
4. 稳定性:稳定