题要求实现基于顺序表的“重者沉”的冒泡排序算法,就是第一趟排序把最大值排到表尾,第二趟排序把次大值排到表尾倒数第二位,以此类推。最后要求打印出每一趟的排序结果。顺序表的结构体定义如下
时间: 2024-02-17 10:03:22 浏览: 45
好的,你的问题是关于基于顺序表的“重者沉”冒泡排序算法的实现。下面是该算法的实现代码,顺序表的结构体定义如下:
```c
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int r[MAXSIZE + 1];
int length;
} SqList;
void swap(SqList *L, int i, int j) {
int temp = L->r[i];
L->r[i] = L->r[j];
L->r[j] = temp;
}
void BubbleSort(SqList *L) {
int i, j;
for (i = L->length - 1; i > 0; i--) {
for (j = 0; j < i; j++) {
if (L->r[j] > L->r[j + 1]) {
swap(L, j, j + 1);
}
}
printf("第 %d 趟排序结果:", L->length - i);
for (int k = 0; k < L->length; k++) {
printf("%d ", L->r[k]);
}
printf("\n");
}
}
```
在该代码中,swap函数实现了交换顺序表中两个元素的功能,BubbleSort函数实现了基于顺序表的“重者沉”冒泡排序算法,并输出每一趟的排序结果。
阅读全文