void BubbleSort(ElemType A[],int n)
{
//用冒泡排序法将序列A中的元素按照从小到大排列
//注意此代码是从第一趟开始计数,而不是用第0趟
//表长为n,共需要n-1趟排序(外层循环)
//每m趟排序需要比较n-m次(内层循环)
RedType temp;
int m,j;
for (m = 1; m <= n - 1; m++)//外层循环,n个记录总共需要 n-1 趟排序
{
flag = false;//表示本趟冒泡是否发生交换
for (j = 1; j <= n - m; j++)//内层循环,第 m 趟需要比较 n-m 次
{
if (A[j].key > A[j+1].key)//发生逆序,则交换
{
temp = A[j];
A[j] = A[j + 1];
A[j + 1] = temp;
flag = true;
}
}
if (flag == false)//本趟遍历后没有发生交换,说明已有序,跳出循环不必继续遍历了
return;
}
}