18_sorting.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * 示例18:冒泡排序(Bubble Sort)
  3. * 功能:学习经典的排序算法 - 冒泡排序
  4. * 通过不断比较相邻元素并交换,把大的元素"冒泡"到后面
  5. */
  6. #include <stdio.h>
  7. // 定义一个函数:冒泡排序
  8. // 参数:数组和数组长度
  9. void bubbleSort(int arr[], int n) {
  10. // 外层循环控制排序的轮数
  11. for (int i = 0; i < n - 1; i++) {
  12. // 内层循环进行相邻元素的比较和交换
  13. // 每轮结束后,最大的元素会"冒泡"到最后
  14. for (int j = 0; j < n - 1 - i; j++) {
  15. // 如果前面的元素比后面的大,就交换
  16. if (arr[j] > arr[j + 1]) {
  17. // 交换两个元素
  18. int temp = arr[j];
  19. arr[j] = arr[j + 1];
  20. arr[j + 1] = temp;
  21. }
  22. }
  23. }
  24. }
  25. // 定义一个函数:打印数组
  26. void printArray(int arr[], int n) {
  27. for (int i = 0; i < n; i++) {
  28. printf("%d ", arr[i]);
  29. }
  30. printf("\n");
  31. }
  32. int main() {
  33. // 待排序的数组
  34. int numbers[] = {64, 34, 25, 12, 22, 11, 90};
  35. int size = sizeof(numbers) / sizeof(numbers[0]);
  36. printf("排序前的数组:");
  37. printArray(numbers, size);
  38. // 调用冒泡排序函数
  39. bubbleSort(numbers, size);
  40. printf("排序后的数组:");
  41. printArray(numbers, size);
  42. // 演示查找最大值和最小值
  43. printf("\n=== 查找最大最小值 ===\n");
  44. int max = numbers[0];
  45. int min = numbers[0];
  46. for (int i = 1; i < size; i++) {
  47. if (numbers[i] > max) max = numbers[i];
  48. if (numbers[i] < min) min = numbers[i];
  49. }
  50. printf("最大值:%d,最小值:%d\n", max, min);
  51. return 0;
  52. }