用 C 语言优化冒泡排序
时间: 2023-04-10 18:04:51 浏览: 75
冒泡排序是一种简单但效率较低的排序算法,其时间复杂度为O(n^2)。为了优化冒泡排序,可以采用以下方法:
1. 增加一个标志位,记录每次冒泡是否发生交换,如果没有发生交换,则说明已经排好序,可以直接退出循环。
2. 减少比较次数,每次冒泡只需要比较未排序部分的最大值即可。
3. 双向冒泡排序,即同时从前往后和从后往前进行冒泡,可以减少排序次数。
以下是用 C 语言实现优化后的冒泡排序代码:
```
void bubble_sort(int arr[], int len) {
int i, j, temp;
int flag; // 标志位,记录是否发生交换
for (i = 0; i < len - 1; i++) {
flag = 0; // 初始化标志位
for (j = 0; j < len - 1 - i; 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;
}
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)