基本冒泡排序实现
#include <stdio.h>
// 冒泡排序函数
void bubbleSort(int arr[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换arr[j]与arr[j + 1]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
优化思路
- 设置标志位:在每一轮比较开始前,设一个标志位
flag
为0
,若在该轮比较中有元素交换,则将flag
设为1
。如果一轮比较结束后flag
仍为0
,说明数组已经有序,可提前结束排序。
优化后的代码
#include <stdio.h>
// 优化后的冒泡排序函数
void optimizedBubbleSort(int arr[], int n) {
int i, j;
int flag;
for (i = 0; i < n - 1; i++) {
flag = 0;
for (j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换arr[j]与arr[j + 1]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = 1;
}
}
if (flag == 0) {
break;
}
}
}