• C#冒泡排序算法


    冒泡排序实现原理

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

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

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

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

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

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

    冒泡排序图解

    图片

    冒泡排序实现的2种方式

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

    1.         /// <summary>
    2.         /// 双重循环方式实现冒泡排序
    3.         /// </summary>
    4.         public static void BubbleSort()
    5.         {
    6.             int[] arr = { 189562347 };
    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.         /// <summary>
    2.         /// 递归方式实现冒泡排序
    3.         /// </summary>
    4.         /// <param name="arr">arr</param>
    5.         /// <param name="arrLength">arrLength</param>
    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 = { 189562347 };
    25.             int arrLength = arr.Length;
    26.             RecursiveBubbleSort(arr, arrLength);
    27.             Console.WriteLine("排序后结果:" + string.Join(", ", arr));
    28.         }

    总结

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

    参考文章

    https://blog.csdn.net/qq_45019143/article/details/109961460

  • 相关阅读:
    【数据集标注制作】视频剪切标注1——类DarkLabel软件
    [SpringCloud] Eureka 与 Ribbon 简介
    【数据结构】哈希应用——位图、布隆过滤器
    【毕业设计】深度学习卫星遥感图像检测与识别系统(目标检测)
    第十三届蓝桥杯大赛软件赛省赛CC++大学B组
    Linux-进程间通信
    文心一言 VS 讯飞星火 VS chatgpt (104)-- 算法导论10.1 2题
    MySQL 视图,触发器,存储过程,索引,树,慢优化查询
    ESP8266-Arduino编程实例-AM2320温度湿度传感器驱动
    【linux编程】linux文件IO的标准函数及其示例(fopen,fclose,freopen)
  • 原文地址:https://blog.csdn.net/qq_37237487/article/details/133935983