/* * 示例18:冒泡排序(Bubble Sort) * 功能:学习经典的排序算法 - 冒泡排序 * 通过不断比较相邻元素并交换,把大的元素"冒泡"到后面 */ #include // 定义一个函数:冒泡排序 // 参数:数组和数组长度 void bubbleSort(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; } } } } // 定义一个函数:打印数组 void printArray(int arr[], int n) { for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { // 待排序的数组 int numbers[] = {64, 34, 25, 12, 22, 11, 90}; int size = sizeof(numbers) / sizeof(numbers[0]); printf("排序前的数组:"); printArray(numbers, size); // 调用冒泡排序函数 bubbleSort(numbers, size); printf("排序后的数组:"); printArray(numbers, size); // 演示查找最大值和最小值 printf("\n=== 查找最大最小值 ===\n"); int max = numbers[0]; int min = numbers[0]; for (int i = 1; i < size; i++) { if (numbers[i] > max) max = numbers[i]; if (numbers[i] < min) min = numbers[i]; } printf("最大值:%d,最小值:%d\n", max, min); return 0; }