void BubbleSort(SqList &L) { int m,j,flag; ElemType t; m=L.length-1; flag=1; while( ) { flag=0; for(j=1;j<=m;j++) if( ) { flag=1; t=L.r[j];L.r[j]=L.r[j+1];L.r[j+1]=t; } --m; } }
时间: 2024-03-23 12:36:33 浏览: 51
这段代码是冒泡排序算法的实现代码。以下是完整的代码注释:
```c++
void BubbleSort(SqList &L) {
int m, j, flag;
ElemType t;
m = L.length - 1; // 初始时,假设待排序的元素个数为 n,即整个序列都未排序,m = n - 1
flag = 1; // flag 表示本趟排序是否发生交换,1 表示有交换,0 表示无交换
while (m > 0 && flag == 1) { // 当待排序元素个数大于 1 且本趟排序有交换时,继续排序
flag = 0; // 每趟排序开始时,先将 flag 置为 0
for (j = 1; j <= m; j++) {
if (L.r[j] > L.r[j + 1]) { // 如果前面的元素大于后面的元素,就交换它们的位置
flag = 1; // 有交换,将 flag 置为 1
t = L.r[j];
L.r[j] = L.r[j + 1];
L.r[j + 1] = t;
}
}
m--; // 每趟排序结束后,待排序元素个数减一
}
}
```
冒泡排序的基本思想是从前往后依次比较相邻的两个元素,如果前面的元素大于后面的元素,则交换它们的位置,这样一趟排序过后,序列中最大的元素就会被交换到最后面,接着对剩余的 n-1 个元素再进行排序,以此类推,直到整个序列有序。由于每趟排序结束都会将待排序元素个数减一,因此需要在循环外部设置一个变量 m 来表示待排序的元素个数,初始值为 n-1,每趟排序结束后减一,当 m=0 时,排序结束。此外还需要设置一个标志变量 flag 来表示本趟排序是否发生交换,如果没有交换,则说明序列已经有序,可以提前结束排序。
阅读全文