void BubleSort()
{
int i, j, n, flag;
n = t.length;
for (i = 1; i < n; i++)
{
flag = 0;
for (j = n; j > i; j--)
{
if (t.r[j] < t.r[j-1])
{
t.Swap(j, j-1);
flag = 1;
}
}
if (!flag)
break;
}
}
冒泡排序在未改进的情况下, 比较次数为n(n-1)/2,改进后比较次数视情况而定;
最坏情况就是已经逆序排好顺序,则必须做n(n-1)/2交换操作, 即是比较一次交换一次.
最好情况即是正序有序, 只需要比较n-1次, 不需要移动操作, 时间复杂度为O(n).
需要外部空间O(1),
综上未改进的冒泡排序时间复杂度平均和最差情况下为O(n^2), 最好为O(n).
属于外部排序.