• 一、C#冒泡排序算法


    一、C#冒泡排序算法

      简介

    冒泡排序算法是一种基础的排序算法,它的实现原理比较简单。核心思想是通过相邻元素的比较和交换来将最大(或最小)的元素逐步"冒泡"到数列的末尾。

    实现原理

    冒泡排序是一种简单的排序算法,其原理如下:

    1. 从待排序的数组的第一个元素开始,依次比较相邻的两个元素。

    2. 如果前面的元素大于后面的元素(升序排序),则交换这两个元素的位置,使较大的元素“冒泡”到右侧。

    3. 继续比较下一对相邻元素,重复步骤2,直到遍历到数组的倒数第二个元素。此时,最大的元素会被交换到数组的最后一个位置。

    4. 针对剩余尚未排序的元素,重复步骤1到步骤3。每次遍历过程中,最大的元素都会被放置到正确的位置上。

    5. 持续以上操作,直到所有元素都按照指定的顺序排列为止。                                                                                                                  冒泡排序图解

    冒泡排序实现的2种方式

      双重循环方式实现冒泡排序

    1. ///
    2. /// 双重循环方式实现冒泡排序
    3. ///
    4. public static void BubbleSort()
    5. {
    6. int[] arr = { 1, 8, 9, 5, 6, 2, 3, 4, 7 };
    7. int arrLength = arr.Length;
    8. for (int i = 0; i < arrLength - 1; i++)
    9. {
    10. for (int j = 0; j < arrLength - i - 1; j++)
    11. {
    12. if (arr[j] > arr[j + 1])
    13. {
    14. //交换arr[j]和arr[j+1]的值
    15. int temp = arr[j];
    16. arr[j] = arr[j + 1];
    17. arr[j + 1] = temp;
    18. }
    19. }
    20. }
    21. Console.WriteLine("排序后结果:" + string.Join(", ", arr));
    22. }

       递归方式实现冒泡排序

    1. ///
    2. /// 递归方式实现冒泡排序
    3. ///
    4. /// arr
    5. /// arrLength
    6. public static void RecursiveBubbleSort(int[] arr, int arrLength)
    7. {
    8. if (arrLength == 1)
    9. return;
    10. for (int i = 0; i < arrLength - 1; i++)
    11. {
    12. if (arr[i] > arr[i + 1])
    13. {
    14. //交换arr[i]和arr[i+1]的值
    15. int temp = arr[i];
    16. arr[i] = arr[i + 1];
    17. arr[i + 1] = temp;
    18. }
    19. }
    20. RecursiveBubbleSort(arr, arrLength - 1);
    21. }
    22. public static void RecursiveBubbleSortRun()
    23. {
    24. int[] arr = { 1, 8, 9, 5, 6, 2, 3, 4, 7 };
    25. int arrLength = arr.Length;
    26. RecursiveBubbleSort(arr, arrLength);
    27. Console.WriteLine("排序后结果:" + string.Join(", ", arr));
    28. }

    冒泡排序总结

    冒泡排序的名称来源于元素比较过程中,较大的元素会逐渐向右“冒泡”到正确的位置上。它的时间复杂度为O(n^2),在实际应用中适用于数据规模较小的情况。在实际应用中,我们需要根据具体情况选择合适的实现方式来平衡代码的可读性和排序效率。同时,如果对排序算法的效率要求较高,可以考虑使用其他更高效的排序算法,如快速排序或归并排序。

  • 相关阅读:
    阿里技术官首发的Java核心框架指导手册,为了大厂得码住学起来~
    [SpringMVC]REST入门案例与优化
    机器学习笔记之核方法(二)正定核函数的充要性证明
    【Jenkins+K8s】持续集成与交付 (二十):K8s集群通过Deployment方式部署安装Jenkins
    MHA高可用及故障切换
    线性代数学习笔记10-3:奇异值分解SVD(从四个子空间角度理解)
    开源AGV调度系统OpenTCS中的路由器(router)详解
    【软考软件评测师】第十章节 软件工程之开发模型与方法
    No spring.config.import property has been defined
    RK3588 AP6398RS3之WIFI调试(一)
  • 原文地址:https://blog.csdn.net/qq_38112703/article/details/136724890