pta7-14 冒泡法排序
时间: 2024-12-27 18:17:03 浏览: 26
### 关于 PTA 平台第 7 章第 14 题冒泡排序算法实现与解析
#### 冒泡排序原理说明
冒泡排序是一种简单的排序算法。该算法重复遍历要排序的数列,一次比较两个相邻元素,如果它们的顺序错误就交换过来。遍历数列的工作会持续进行直到不需要再交换为止。
#### C语言中的具体实现方式
下面是一个基于C语言的具体实现例子:
```c
#include <stdio.h>
// 定义一个函数用于执行冒泡排序
void bubbleSort(int arr[], int n) {
int i, j;
for (i = 0; i < n-1; i++) {
// 提前退出标志位
int flag = 0;
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
// 进行元素交换
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
// 如果有元素被交换,则设置flag为1
flag = 1;
}
}
// 若未发生任何交换则提前结束循环
if (!flag){
break;
}
}
}
// 测试代码部分
int main() {
int nums[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(nums)/sizeof(nums[0]);
printf("原始数组:\n");
for (int k=0;k<n;++k)
printf("%d ",nums[k]);
bubbleSort(nums,n);
printf("\n排序后的数组:\n");
for (int l=0;l<n;++l)
printf("%d ",nums[l]);
return 0;
}
```
此段程序展示了如何利用双重for循环来完成整个列表中所有可能位置上的两两对比工作,并通过引入`flag`变量优化了传统版本中即使已经有序仍需继续无意义迭代的问题[^1]。
阅读全文