冒泡法排序从大到小 c语言
时间: 2024-10-16 08:07:44 浏览: 29
冒泡法是一种简单的排序算法,它通过不断交换相邻的元素,将较大的数逐步“浮”到数组的顶部。如果要实现冒泡排序从大到小排序,你需要对原算法稍作修改。以下是基本的步骤:
1. **遍历数组**:通常外层循环会从第一个元素到最后一个元素,内层循环则是从前一个元素到倒数第二个。
2. **比较并交换**:对于每一对相邻的元素,如果它们的值逆序(当前元素小于下一个元素),就交换这两个位置上的值。
3. **优化**:由于每次遍历都会把最大的未排序元素排到正确的位置,所以最后一次遍历时如果没有任何交换发生,说明已经排序完成,可以直接跳出循环。
下面是C语言的基本实现代码示例(从大到小):
```c
#include <stdio.h>
void bubbleSortDesc(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] < arr[j + 1]) { // 比较并交换,从大到小
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 2, 8, 1, 9};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSortDesc(arr, n);
printf("Sorted array in descending order: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
阅读全文