typedef int T;
void bubblesort(T v[], int n)
{
bool exchange;//交换标志
int i, j;
for (i = 1; i < n; i++)
{
exchange = false;
for(int j=n-1;j>=i;j--)
if (v[j] < v[j - 1])
{
int temp = v[j];
v[j] = v[j - 1];
v[j - 1] = temp;
exchange = true;
}
if (exchange == false) //如果上一次没有执行交换,则说明元素已经有序,因此不需要再进行比较
return; //退出最外层循环
}
}
改进后的冒泡算法,最好的情况需要n次比较和0次交换操作,而在一般情况和最差情况下,排序算法大约需要 (n^2)/2次比较和交换操作。