冒泡排序是一种交换排序,它的关键思想是:两两相邻元素的比较。如果反序则交换,直到没有反序的元素。
最差时间复杂度 O(n^2)
最优时间复杂度 O(n)
平均时间复杂度 O(n^2)
最差空间复杂度 O(n),辅助空间 O(1)
void swap(int& x,int& y)
{
if(x == y)
return ;
x ^= y;
y ^= x;
x ^= y;
}
void BubbleSort(int arr[],int n)
{
int i,j,flag = 1;//flag用作标记
for(i=0;i<n && flag;++i)
{
flag = 0;
for(j = n-1;j>=i;--j)
{
if(arr[j-1]>arr[j])//当元素有序后即不会进入循环,因此标志位仍为0,外层循环中止。
{
swap(arr[j-1],arr[j]);
flag = 1;
}
}
}
}