其基本思想为从后往前(或从前往后)两两比较相邻元素的值,若为逆序(A[i-1]>A[i]),则交换他们,直到序列比较完;
C语言代码如下:
void BubbleSort(int A[], int n)
{
int i,j,temp,flag;
for(i = 0; i < n; i++)
{
flag = false; //表示本次冒泡是否发生过交换的标志
for(j = n-1; j > i; j--) //若为逆序
{
if(A[j-1]>A[j])
{
temp = A[j];
A[j] = A[j-1];
A[j-1] = temp;
flag = true;
}
}
if(flag == false) //本次遍历没有发生交换,说明表已经有序
return;
}
}
最坏情况下时间复杂度为O(n^2),平均时间复杂度也为O(n ^2);