用C语言设计一个子函数实现冒泡排序算法,并在子函数中打印每趟排序后的结果
时间: 2024-10-07 21:07:34 浏览: 32
在C语言中,我们可以设计一个名为`bubble_sort()`的子函数来实现冒泡排序算法。冒泡排序通过反复交换相邻的元素,将较大的元素逐渐“浮”到数组的顶部。下面是冒泡排序的具体实现,包括打印每趟排序后的结果:
```c
#include <stdio.h>
// 子函数:冒泡排序算法
void bubble_sort(int arr[], int n) {
int i, j;
bool swapped; // 标记是否进行了交换
for (i = 0; i < n - 1; i++) { // 循环直到倒数第二个元素
swapped = false; // 每次开始前假设没有交换
printf("第 %d 趟排序:\n", i + 1);
for (j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true; // 发生了交换,标记为true
}
}
// 如果一趟排序未发生交换,说明已有序,提前结束
if (!swapped)
break;
// 打印当前趟排序结果
for (j = 0; j < n; j++)
printf("%d ", arr[j]);
printf("\n");
}
}
int main() {
int arr[] = {5, 3, 8, 6, 1};
int n = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, n);
return 0;
}
```
在这个示例中,`bubble_sort`函数接收一个整型数组和它的长度。每次外层循环都会对数组进行一次完整的比较和交换操作,然后检查是否发生了交换。如果没有,则表示已经有序,可以提前退出。
阅读全文