原理:
依次便利数据,比较相邻元素,把数值较大或较小的数据往后排。假设有n个数据,那么第一次最大或最小的数值排到最后(n-1的位置),第二次最大或最小的数值排在(n-2的位置),以此类推。
举例:
2 | 12 | 5 | 57 | 31 | 31 | 90 | 32 | 95 | 76 |
2 | 5 | 12 | 31 | 57 | 31 | 32 | 90 | 76 | 95 |
2 | 5 | 12 | 31 | 31 | 57 | 32 | 76 | 90 | 95 |
2 | 5 | 12 | 31 | 31 | 32 | 57 | 76 | 90 | 95 |
2 | 5 | 12 | 31 | 31 | 32 | 57 | 76 | 90 | 95 |
2 | 5 | 12 | 31 | 31 | 32 | 57 | 76 | 90 | 95 |
2 | 5 | 12 | 31 | 31 | 32 | 57 | 76 | 90 | 95 |
2 | 5 | 12 | 31 | 31 | 32 | 57 | 76 | 90 | 95 |
2 | 5 | 12 | 31 | 31 | 32 | 57 | 76 | 90 | 95 |
2 | 5 | 12 | 31 | 31 | 32 | 57 | 76 | 90 | 95 |
2 | 5 | 12 | 31 | 31 | 32 | 57 | 76 | 90 | 95 |
代码:
void BubblingSort(int a[],int nlen)
{
for (int i = 0; i != nlen; ++i)
{
for (int j = nlen - 1; j > i; --j)
{
if (a[j - 1] > a[j])
{
a[j - 1] ^= a[j];
a[j] ^= a[j - 1];
a[j - 1] ^= a[j];
}
}
}
}
总结:
S(n)=n+(n-1)+(n-2)+...+(n-n)=n(n+0)/2,时间复杂度为O(n^2)。