写在前面

冒泡排序的核心思想就是两两相邻的元素进行比较,
每完成一趟冒泡排序, 都会有一个元素放到要放的位置上.

实现

#include <stdio.h>
void swap(int* a, int* b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
void bubble_sort(int arr[], int size) {
for (int i = 0; i < size - 1; i++) {
// size 个元素要排 size-1 趟
int is_order = 1;
// 假设数组已经有序
for (int j = 0; j < size - 1 - i; j++) {
// 每排完一趟, 待排序元素就会少一个
if (arr[j] > arr[j + 1]) {
// 升序, 不满足则交换
is_order = 0;//无序
swap(&arr[j], &arr[j + 1]);
}
//if (arr[j] < arr[j + 1]) {
// //降序, 不满足则交换
// is_order = 0;//无序
// swap(&arr[j], &arr[j + 1]);
//}
}
if (is_order == 1) {
//假设成立
break;
}
}
}
int main() {
int arr[10] = { 10,9,8,7,6,5,4,3,2,1 };
int size = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr, size);
printf("after bubble_sort:\n");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}

写在最后

自己动手实现一下吧~