| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*
- * 示例18:冒泡排序(Bubble Sort)
- * 功能:学习经典的排序算法 - 冒泡排序
- * 通过不断比较相邻元素并交换,把大的元素"冒泡"到后面
- */
- #include <stdio.h>
- // 定义一个函数:冒泡排序
- // 参数:数组和数组长度
- 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;
- }
|