上浮和下沉交替的冒泡排序算法C语言
时间: 2024-11-15 18:33:30 浏览: 12
上浮和下沉交替的冒泡排序算法,也称为"交错冒泡排序"或" Cocktail Shaker Sort",是一种改进版的冒泡排序。它的基本思想是在每一轮迭代中,不仅像标准冒泡排序那样从左到右比较并交换相邻未排序元素,还做一次相反方向的扫描,即从右到左。这样就像摇晃一个装有液体的瓶子一样,大的元素会先“沉”到底部,小的元素则会“浮”到顶部。
以下是C语言实现交错冒泡排序的基本步骤:
```c
void cocktail_sort(int arr[], int n) {
bool swapped;
for (int i = 0; i < n - 1; i++) {
// 上升排序阶段
swapped = false;
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(&arr[j], &arr[j + 1]);
swapped = true;
}
}
// 如果这一轮没有发生交换,说明已经有序,提前结束
if (!swapped)
break;
// 下降排序阶段
swapped = false;
for (int j = n - i - 2; j >= 0; j--) {
if (arr[j] > arr[j + 1]) {
swap(&arr[j], &arr[j + 1]);
swapped = true;
}
}
}
}
// 冒泡排序中的swap函数
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
阅读全文