c++冒泡排序改良版
时间: 2023-09-25 13:08:55 浏览: 97
冒泡排序的改良版是通过在每一轮遍历中记录最后一次发生交换的位置,并将该位置作为下一轮遍历的边界。这样可以减少比较的次数,提高排序效率。
以下是冒泡排序改良版的示例代码(使用C语言):
```c
void bubbleSort(int arr[], int n) {
int i, j;
int lastSwap; // 记录最后一次交换的位置
for (i = n - 1; i > 0; i = lastSwap) {
lastSwap = 0;
for (j = 0; j < i; 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;
lastSwap = j; // 更新最后一次交换的位置
}
}
}
}
```
在每一轮遍历中,如果没有发生交换操作,则说明数组已经有序,可以提前结束排序。这样可以减少不必要的比较操作,进一步提高排序效率。
希望以上代码对你有帮助!如果有任何问题,请随时追问。
阅读全文