c语言冒泡排序flag优化10个数
时间: 2023-06-10 18:07:57 浏览: 56
以下是使用C语言实现冒泡排序并进行flag优化的代码,对10个数进行排序:
```c
#include <stdio.h>
void bubble_sort(int arr[], int n) {
int i, j, flag, temp;
for (i = 0; i < n - 1; i++) {
flag = 0; // 设置标志位
for (j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = 1; // 设置标志位为1,表示有数据交换
}
}
if (flag == 0) {
break; // 如果标志位为0,则表示已经有序,退出循环
}
}
}
int main() {
int arr[] = {6, 3, 8, 2, 9, 1, 4, 7, 5, 0};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
printf("排序前的数组:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
bubble_sort(arr, n); // 排序
printf("排序后的数组:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在上述代码中,我们通过设置一个标志位 `flag` 来判断当前数组是否已经有序。如果在一次冒泡过程中没有发生数据交换,说明数组已经有序,可以直接退出循环。这样可以避免不必要的比较和交换,提高了冒泡排序的效率。