【核心思想】相邻元素两两比较,每一趟比较确定一个元素为最大值或最小值。
【关键点】
- 对于n个数据的排序,共需(n-1)趟
- 每一趟比较确定一个最大值或最小值,即排序好一个数据元素
- 每下一趟排序数据个数都比上一趟少一个
【实例分析】
待排序数组(升序):5 3 4 1
第一趟排序:3 4 1 5
第二趟排序:3 1 4 5
第三趟排序:1 3 4 5
【C语言实现代码】
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
// 冒泡排序
// 核心思想:相邻元素两两比较
// 一趟比较少一个元素
void Sort1(int arr[], int sz) {
// 确定冒泡排序的趟数
for (int i = 0; i < sz - 1; i++) {
// 优化
int flag = 1; // 假设该趟已经有序
// 一趟冒泡排序
for (int j = 0; j < sz-1-i; j++)
{
if (arr[j] < arr[j + 1]) {
// 交换
int tmp = arr[j